如果我的正则表达式模式@"\b(word1|word2)\b"
在只找到一个确切的单词时返回true,那么如果找到两个确切的单词,哪个模式会返回true?
我发现的唯一例子就像我做过的那样,每当找到一个单词时返回true,但我希望它在找到所有单词时返回true。因此,相同单词的倍数不计算在内。我需要知道是否存在至少1次出现的所有单词。
修改
实施例: “快速的棕色狐狸跳过懒狗”
pattern:@"\b(fox|dog)\b"
< ----返回true
pattern:@"\b(fox|elephant)\b"
< ----返回true,我希望它返回false。
添加:我必须灵活,因为要搜索的单词数量取决于我的用户。
答案 0 :(得分:2)
您可以使用前瞻
来实现这一目标(?=.*\bWord1\b)(?=.*\bWord2\b).*
(?=.*\bWord1\b)
是一个积极的前瞻。它检查内部模式是否发生在字符串中。它与任何东西都不匹配!
要匹配字符串,最后会有.*
,但如果两个前瞻都为真,则只会匹配,即两个字都在字符串中找到。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果必须,
@"\b(word1\b(.*\b)?word2|word2\b(.*\b)?word1)\b"
但最好使用两个正则表达式。
答案 3 :(得分:0)
Stema的答案是最好的imo。
以下是Charles
的简化版本鉴于:“word和word2以及word3和word4。word4是一个好人,不是他word1?”
(\ bword4 \ B'EM> \ bword2 \ C |。\ bword2 \ B'/ EM> \ bword4 \ b)中
但就像我说的Stema ftw