字符串中的标记数

时间:2014-03-23 15:34:48

标签: c# regex

我真的想知道为什么以下代码返回1而不是2.任何线索?提前谢谢。

string report = "foo bar foo aloha hole hole foo cat gag weird gag strange tourist";
string name = "hole";

int count = Regex.Matches(report, @"(^|\s)" + Regex.Escape(name) + @"(\s|$)").Count;
Console.WriteLine("count is " + c);

2 个答案:

答案 0 :(得分:1)

由于第一个匹配消耗了单词hole周围的空格,因此无法匹配第二个hole

aloha hole hole foo
     ^    ^

您最好使用字边界\b代替:

int count = Regex.Matches(report, @"\b" + Regex.Escape(name) + @"\b").Count;

答案 1 :(得分:1)

如果你只是想学习Regex,那就冷静一下,不要理会。

否则,Regex对于使用其他方法(例如LINQ)这么简单的事情来说是过度的:

var count = report.Split().Count(x => x == name);