簡體   English   中英

正則表達式。匹配整個單詞

[英]Regex.Match whole words

C#中,我想使用正則表達式來匹配以下任何單詞:

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

我想在內容字符串中找到整個單詞。 我認為這個regex會這樣做:

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

但它對於像participants這樣的詞返回 true,即使我只想要整個詞pants

我如何只匹配那些字面意思?

您應該將單詞分隔符添加到您的正則表達式中:

\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|$))

正如其他人所建議的那樣,即使單詞位於輸入字符串的開頭或結尾,我認為\\b也可以代替(?=(\\W|^))(?!(\\W|$))工作,但是我'不確定。

使用 \\b 元序列在其上放置單詞邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM