是否有可以在一个模式中接受多个具有相同名称的组的正则表达式api或库?
答案 0 :(得分:2)
(ab(?<a>[\w]*)|bs(?<a>[\w]*))
正则表达式的替代方法是(ab|bs)(?<a>[\w]*)
,具有相同的名称。使用(ab(?<a>[\w]*)|bs(?<b>[\w]*))
和(ab|bs)(?<a>[\w]*)
在演示链接中查看测试。这些给你相同的结果。
答案 1 :(得分:1)
这是一个非常古老的问题,但谷歌把我带到了这里,我找到了使用/J
修饰符 PHP 的解决方案。这里解释了所有细节:http://www.rexegg.com/regex-capture.html#dupe_names
在.NET,PCRE(C,PHP,R ...),Perl和Ruby中,您可以使用相同的组 在您的模式中的各个位置命名。 (在PCRE中你需要使用 (?J)修饰符或PCRE_DUPNAMES选项。)在这些引擎中,这个正则表达式 是有效的:
:(?<token>\d+)|(?<token>\d+)#