3
このページでhttp://swtch.com/~rsc/regexp/regexp3.html RE2は名前付き式をサポートしています。 RE2正規表現では名前付きキャプチャグループはどのように使用されていますか?
RE2
はキャプチャ(?P<name>expr)
という名前のPythonのスタイルをサポートしますが、ない 代替は(?<name>expr)
と(?'name'expr)
は.NETと のPerlが使用する構文。
ruby-1.9.2-p180 :003 > r = RE2::Regexp.compile("(?P<foo>.+) bla")
#=> #<RE2::Regexp /(?P<foo>.+) bla/>
ruby-1.9.2-p180 :006 > r = r.match("lalal bla")
#=> #<RE2::MatchData "lalal bla" 1:"lalal">
ruby-1.9.2-p180 :009 > r[1] #=> "lalal"
ruby-1.9.2-p180 :010 > r[:foo]
TypeError: can't convert Symbol into Integer
ruby-1.9.2-p180 :011 > r["foo"]
TypeError: can't convert String into Integer
しかし、私は名前の一致にアクセスすることはできないんだけど、それは無用の実装のように思えます。何か不足していますか?
はちょうどRE2の使用を発見:私の答えは適切ではなかったため、削除されました。 –
興味深いことに、RE2があなたにルビ1.9.3のRegexp実装がないと言うことができますか? – sheldonh
おそらく、名前付き参照は置換文字列で使うことができるので、次のように正規表現で逆参照することができます: '(?P = blah)' –