字符串中记号的计数

本文关键字:记号 字符串 | 更新日期: 2023-09-27 17:52:35

我真的很奇怪为什么下面的代码返回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);

字符串中记号的计数

如果你只是想学习Regex,那么很好,忽略这个

否则,对于使用其他方法(如LINQ)如此简单的事情,Regex是多余的:

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

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

aloha hole hole foo
     ^    ^

你最好使用字边界'b代替:

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