在这个页面http://swtch.com/~rsc/regexp/regexp3.html上,它说RE2支持命名表达式。
RE2支持Python风格的命名捕获
RE2支持Python风格的命名捕获
(?P<name>expr)
,但不支持.NET和Perl使用的替代语法(?<name>expr)
和(?'name'expr)
。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
但我无法访问名称匹配的比赛,所以这似乎是一个无用的实现。我有什么遗漏的吗?
(?P=blah)
。 - Jeremy Stein