【发布时间】:2016-11-09 13:56:56
【问题描述】:
我需要在多个字符串中找到两个没有单词或它们之间只有一个单词的单词。我为该案例创建了正则表达式,以查找这两个单词是否存在于字符串中:
^(?=[\s\S]*\bFirst\b)(?=[\s\S]*\bSecond\b)[\s\S]+
它可以正常工作。 然后我尝试在这个正则表达式中插入附加代码:
^(?=[\s\S]*\bFirst\b)(\b\w+\b){0,1}(?=[\s\S]*\bSecond\b)[\s\S]+
但它没有用。它选择在搜索词之间具有两个或多个词的文本。这不是我需要的。 第一第二 - 必须选择 第一个词1 第二个 - 必须选择 第一个 word1 word2 第二个 - 不能由正则表达式选择,但我的正则表达式选择它。
我能得到建议如何解决这个问题吗?
【问题讨论】:
-
也许,
^(?=[\s\S]*\bFirst(?:\W+\w+)?\W+Second\b)[\s\S]+?还是你还需要匹配Second First和Second word First? -
另外,检查
^(?=[\s\S]*\b(First|Second)(?:\W+\w+)?\W+(?!\1\b)(?:First|Second)\b)[\s\S]+ -
是的,我需要选择“第二优先”和“第二单词优先”。您的两个示例都可以正常工作。谢谢。
-
如果您的要求不符合问题,请更新问题并添加应该匹配和不应该匹配的示例文本。
标签: regex