我正在使用Pattern.compile()
来查找文本字符串是否包含其他两个字符串。但它必须采用一种正则表达式。
例如,字符串中必须包含“StringOne”和“StringTwo”。
我可以Pattern.compile("(StringOne StringTwo|StrinTwo StringOne")
,但两个字符串都很长,我想知道我是否可以压缩它。
如果我"(StringOne )?StringTwo( StringOne)?"
,它将匹配“StringTwo”和“StringOne StringTwo StringOne”。
答案 0 :(得分:0)
使用此正则表达式:
^(?=.*\\bStringOne\\b)(?=.*\\bStringTwo\\b)
这使用两个预测来锚定输入开始以断言两个字符串出现某处
编辑:
在字符串的末尾添加了单词边界\b
以防止一个字符串在另一个字符串中匹配,尽管这不是问题的明确要求。
答案 1 :(得分:0)
存在速度问题。 您可以使用前瞻来完成此任务,但速度方面成本很高。在长串上看起来非常广泛。
如果字符串很长,则更快的方法是进行两次单独的匹配。
如果您确实需要这样做,请使用原始方式string A string B|String B String A