如果我的正则表达式模式 @"\b(word1|word2)\b"
在仅找到 1 个准确单词时返回 true,如果找到两个准确单词,哪个模式将返回 true?
我找到的唯一例子就像我做的那样,只要找到 1 个单词就返回 true,但我希望它在找到所有单词时返回 true。所以同一个词的倍数不算数。我需要知道所有单词是否至少出现 1 次。
编辑:
例子: “敏捷的棕色狐狸跳过懒惰的狗”
模式:@"\b(fox|dog)\b"
<---- 返回真值
pattern: @"\b(fox|elephant)\b"
<---- 返回 true,我希望它返回 false。
补充:我必须灵活一些,因为要搜索的字数取决于我的用户。
最佳答案
你可以使用前瞻来实现这一点
(?=.*\bWord1\b)(?=.*\bWord2\b).*
(?=.*\bWord1\b)
是一个积极的前瞻。它检查内部模式是否出现在字符串中。它不匹配任何东西!
要匹配字符串,末尾有 .*
,但这只会匹配,如果两个前瞻都是真的,即你的两个词都在字符串中找到。
关于c# - 正则表达式 : which pattern would return true if both exact words were found?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000353/