正则表达式和冒号(:)

时间:2010-11-09 14:15:01

标签: c# regex

我有以下代码。这个想法是检测整个单词。

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**

似乎正则表达式忽略了冒号。如何修改代码,使最后一行返回false?

2 个答案:

答案 0 :(得分:12)

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

也许你想要一个这样的表达式:

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

这意味着:字符串“Hello”,前面是表达式的开头或空格,后跟表达式的结尾或空格。

答案 1 :(得分:3)

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

如果你想在你的单词“Hello”之后跟随空白,那么请使用"\bHello\s"