1

Pattern.compile()用来查找文本字符串是否包含其他两个字符串。但它需要采用一种正则表达式模式。

例如,字符串中必须包含“StringOne”和“StringTwo”。

我可以Pattern.compile("(StringOne StringTwo|StrinTwo StringOne"),但是两个字符串都很长,我想看看我是否可以压缩它。

如果我这样做"(StringOne )?StringTwo( StringOne)?",它将匹配“StringTwo”和“StringOne StringTwo StringOne”。

4

2 回答 2

0

有速度问题。您可能可以使用前瞻来完成此操作,但它的速度成本很高。前瞻在长字符串上非常广泛。

如果字符串很长,更快的方法是进行两个单独的匹配。

如果你真的需要做一个,使用你原来的方式string A string B|String B String A

于 2013-01-08T10:08:45.497 回答
0

使用这个正则表达式:

^(?=.*\\bStringOne\\b)(?=.*\\bStringTwo\\b)

这使用锚定到输入开始的两个前瞻来断言两个字符串都出现在某处

编辑:在字符串的末尾添加了单词边界\b,以防止一个字符串在另一个字符串中匹配,尽管这不是问题的明确要求。

于 2013-01-07T11:00:34.847 回答