正则表达式:如果找到两个确切的单词,哪个模式会返回true?

时间:2011-08-09 17:35:47

标签: c# regex

如果我的正则表达式模式@"\b(word1|word2)\b"在只找到一个确切的单词时返回true,那么如果找到两个确切的单词,哪个模式会返回true?

我发现的唯一例子就像我做过的那样,每当找到一个单词时返回true,但我希望它在找到所有单词时返回true。因此,相同单词的倍数不计算在内。我需要知道是否存在至少1次出现的所有单词。

修改

实施例: “快速的棕色狐狸跳过懒狗”

pattern:@"\b(fox|dog)\b"< ----返回true

pattern:@"\b(fox|elephant)\b"< ----返回true,我希望它返回false。

添加:我必须灵活,因为要搜索的单词数量取决于我的用户。

4 个答案:

答案 0 :(得分:2)

您可以使用前瞻

来实现这一目标
(?=.*\bWord1\b)(?=.*\bWord2\b).*

here on Regexr

(?=.*\bWord1\b)是一个积极的前瞻。它检查内部模式是否发生在字符串中。它与任何东西都不匹配!

要匹配字符串,最后会有.*,但如果两个前瞻都为真,则只会匹配,即两个字都在字符串中找到。

答案 1 :(得分:0)

简单的答案是,对于第一个单词,有两个正则表达式,另一个用于另一个,如果两个都返回true(和它们),则结果为真。

@"\b(word1)\b"@"\b(word2)\b"

您也可以查看here

答案 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