6

是否有任何 Java 正则表达式 api 或库可以在一种模式中接受多个具有相同名称的组?

4

2 回答 2

4

这是一个非常古老的问题,但谷歌把我带到了这里,我找到了使用修饰符的PHP解决方案。/J所有细节在这里解释:http ://www.rexegg.com/regex-capture.html#dupe_names

在 .NET、PCRE(C、PHP、R...)、Perl 和 Ruby 中,您可以在模式的不同位置使用相同的组名。(在 PCRE 中,您需要使用 (?J) 修饰符或 PCRE_DUPNAMES 选项。)在这些引擎中,此正则表达式将是有效的:

:(?<token>\d+)|(?<token>\d+)#

这里的工作示例https://regex101.com/r/h7HJXj/1

于 2017-10-28T14:14:40.820 回答
2

(ab(?<a>[\w]*)|bs(?<a>[\w]*)) 正则表达式的替代品(ab|bs)(?<a>[\w]*) 具有相同的名称。(ab(?<a>[\w]*)|bs(?<b>[\w]*))在演示链接中使用和检查测试(ab|bs)(?<a>[\w]*)。这些给你同样的结果。

演示

于 2015-06-30T18:52:54.950 回答