正则expression式。匹配整个单词

C# ,我想使用一个正则expression式来匹配这些单词中的任何一个:

 string keywords = "(shoes|shirt|pants)"; 

我想在内容string中find整个单词。 我认为这个regex会这样做:

 if (Regex.Match(content, keywords + "\\s+", RegexOptions.Singleline | RegexOptions.IgnoreCase).Success) { //matched } 

但是对于participants这样的单词来说,即使我只想要整个单词pants

我怎样才能匹配那些文字?

你应该添加分隔符到你的正则expression式:

 \b(shoes|shirt|pants)\b 

在代码中:

 Regex.Match(content, @"\b(shoes|shirt|pants)\b"); 

尝试

 Regex.Match(content, @"\b" + keywords + @"\b", RegexOptions.Singleline | RegexOptions.IgnoreCase) 

\b匹配单词边界。 在这里看到更多的细节。

你需要一个零宽度的断言,在这个单词之前或之后的字符不是单词的一部分:

 (?=(\W|^))(shoes|shirt|pants)(?!(\W|$)) 

正如其他人所build议的那样,我认为 \ b即使在inputstring的开始或结尾处,也会工作而不是(?=(\ W | ^))(?!(\ W | $)) ,我不确定。

用\ b metasequence在它上面放置一个字边界。