假设我有多种模式P1,P2,P3 ,,等等。这些模式是不同的正则表达式模式,以匹配DATE的不同变体。
如何在一段代码中最有效地匹配相同的输入文本。
当然,我可以写一个for()来逐个循环遍历这些模式,但还有更好的方法吗?
答案 0 :(得分:13)
我认为你可以使用正则表达式的|
运算符,并将不同的正则表达式置于paranthesis中,以便将其视为一个匹配的正则表达式。
("(P1)|(P2)|(P3)")
答案 1 :(得分:7)
补充其他答案......
你可以使用交替运算符编写一个难以阅读的大模式:
r1|r2|r3|...|rn
其中r1
等本身就是“完全逃离”的正则表达式。
但是你必须要小心改变的顺序:第一个匹配胜利。也就是说,如果正则表达式引擎不是POSIX正则表达式引擎,但java.util.regex的引擎不是。
因此,对于文本catflap
,请使用正则表达式:
cat|catflap
Java将匹配cat
; POSIX正则表达式引擎将匹配catflap
(最长,最左边的匹配)。
坚持使用更多个性化,可维护的模式是更好的选择。
答案 2 :(得分:0)
我不会使用Pattern
来匹配日期。
您有DateFormat
和SimpleDateFormat
个类来执行此操作。
这就是说,在Patterns
的{{1}}表示中,可以使用交替(|
)运算符来组合String
。 / p>
答案 3 :(得分:0)
您可以使用交替(|)
运算符组合正则表达式的多个模式。
但是如果您有各种输入,则必须将它们从字符串转换为Date实例。然后,您必须按顺序进行操作并逐个验证输入。因此单个正则表达式可以验证输入,但不能用于任何其他逻辑。
答案 4 :(得分:0)
我有类似的问题。 将所有样式都放在一个样式中,并通过|将样式分开为我工作 '(((P1)|(P2)|(P3))'
我的参考代码:
<header>
<form action='' id='search_bar'>
<input type='text' name='search' id='ggg' />
<input type='submit' name='submit_button' />
</form>
<div id='logo'>
<img src='./img/flamingo.svg' />
<a href='#'>Chirpify</a>
</div>
<div id='navigation'>
<a href='#' class='profile'></a>
<a href='#' class='msg'></a>
<a href='#' class='noti'></a>
</div>
</header>