如何在Java中为单行文本匹配多个正则表达式模式?

Lon*_*guy 11 java regex

假设我有多种模式P1,P2,P3 ,,等等.这些模式是不同的正则表达式模式,以匹配DATE的不同变化.

如何在一段代码中最有效地匹配这些输入文本.

当然,我可以写一个for()来逐个循环这些模式,但是有更好的方法吗?

ani*_*udh 14

我认为您可以使用|正则表达式的运算符并将不同的正则表达式置于paranthesis中,以便将其视为要匹配的整个正则表达式.

("(P1)|(P2)|(P3)")

  • 根本不需要parens;)`a | b`是有效的正则表达式.您只使用parens进行捕获 (2认同)

fge*_*fge 11

补充其他答案......

可以使用交替运算符编写一个难以阅读的大模式:

r1|r2|r3|...|rn
Run Code Online (Sandbox Code Playgroud)

其他地方r1本身就是"完全逃亡"的正则表达式.

但是你必须要小心轮换的顺序:第一个匹配胜利.也就是说,如果正则表达式引擎不是POSIX正则表达式引擎,但java.util.regex的引擎不是.

因此,catflap使用正则表达式使用正则表达式:

cat|catflap
Run Code Online (Sandbox Code Playgroud)

Java会匹配cat; POSIX正则表达式引擎将匹配catflap(最长,最左边的匹配).

坚持更多个性化,可维护的模式是一个更好的选择.