我正在使用Pattern.compile()
来查找文本字符串是否包含其他两个字符串。但它需要采用一种正则表达式模式。
例如,字符串中必须包含“StringOne”和“StringTwo”。
我可以做Pattern.compile("(StringOne StringTwo|StrinTwo StringOne")
,但这两个字符串都很长,我想看看是否可以压缩它。
如果我这样做 "(StringOne )?StringTwo( StringOne)?"
它将匹配“StringTwo”和“StringOne StringTwo StringOne”。
最佳答案
使用这个正则表达式:
^(?=.*\\bStringOne\\b)(?=.*\\bStringTwo\\b)
这使用两个锚定到输入开始的前瞻来断言两个字符串出现在某处
编辑:
在字符串末尾添加了单词边界 \b
以防止一个字符串与另一个字符串匹配,尽管这不是问题的明确要求。
关于Java模式匹配器查找多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194479/