代码之家  ›  专栏  ›  技术社区  ›  Liviu Mandras

正则表达式和冒号(:)

  •  6
  • Liviu Mandras  · 技术社区  · 14 年前

    我有以下代码。其目的是检测整个单词。

    bool contains = Regex.IsMatch("Hello1 Hello2", @"\bHello\b"); // yields false
    bool contains = Regex.IsMatch("Hello Hello2", @"\bHello\b"); // yields true
    bool contains = Regex.IsMatch("Hello: Hello2", @"\bHello\b"); **// yields true, but should yield false**
    

    2 回复  |  直到 14 年前
        1
  •  12
  •   Fábio Batista Raza Ahmed    14 年前

    \b 意思是“单词边界”。 : 不是任何词的一部分,所以这个表达是真的。

    (^|\s)Hello(\s|$)
    

    也就是说:

        2
  •  3
  •   Sebastian Schmidt    14 年前

    正则表达式没有忽略冒号。结肠前的位置是 \b 火柴,因为 匹配单词边界。这意味着一个单词字符和一个非单词字符之间的位置。

    "\bHello\s" .