Java模式匹配器查找多个字符串

标签 java regex

我正在使用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/

相关文章:

java - Jhipster apache tomcat 安装

java - 如何在命令行中输入星号以使其能够理解?

Java:将作业发送到服务器执行

java - 在通用 Cplex 回调中访问分支切割节点 ID

Java 正则表达式仅匹配单词('、-、空格)

regex - Grep 所有不以#(哈希)或贪心空格和#(哈希)开头的行

java - 正则表达式,通过验证计算其中的 CRC

javascript - 处理 Javascript RegEx 子匹配

java - 如果文件名模式与 Camel 不匹配,如何将文件移动到错误目录

java - 我的正则表达式搜索仅打印出最后一个匹配项