C# 获取Regex.Matches以在位置0开始匹配

C# 获取Regex.Matches以在位置0开始匹配,c#,regex,C#,Regex,我试图使用正则表达式来计算某个字符串在另一个逗号分隔的字符串中出现的次数 我正在使用Regex.Matches(逗号分隔字符串,特定字符串)。Count获取数字。我唯一的问题是,如果它在字符串的开头对齐,我希望它只是作为匹配项计算 例如,如果我有逗号分隔的字符串 string comma_separated = "dog,cat,bird,blackdog,dog(1)"; string search = "dog"; 并希望查看搜索字符串与逗号分隔字符串的内容匹配的次数 string c

我试图使用正则表达式来计算某个字符串在另一个逗号分隔的字符串中出现的次数

我正在使用
Regex.Matches(逗号分隔字符串,特定字符串)。Count
获取数字。我唯一的问题是,如果它在字符串的开头对齐,我希望它只是作为匹配项计算

例如,如果我有逗号分隔的字符串

string comma_separated = "dog,cat,bird,blackdog,dog(1)"; 
string search = "dog";
并希望查看搜索字符串与逗号分隔字符串的内容匹配的次数

string comma_separated = "dog,cat,bird,blackdog,dog(1)"; 
string search = "dog";
我使用:

int count = Regex.Matches(comma_separated, search).Count;
我希望它是2,因为它与

、猫、鸟、黑狗、(1)”

但是,它返回3,因为它也与blackdog的dog部分匹配


当它识别从字符串开头开始的匹配项时,是否有任何方法可以使其仅计为匹配项?还是我只是不正确地使用了正则表达式?

如评论中所述,正则表达式可能不是实现所需结果的最合乎逻辑的方法。然而,如果您想使用正则表达式来查找匹配项,类似这样的东西将提供您想要的结果

(?<=,|^)dog

(?如评论中所述,正则表达式可能不是实现所需结果的最合乎逻辑的方法。但是,如果您希望使用正则表达式查找匹配项,类似的方法将提供所需结果

(?<=,|^)dog
(?
通过将\b添加到文本的任意一侧,您可以在文本中找到“精确”匹配项


通过将\b添加到文本的任意一侧,您可以在文本中找到“精确”匹配项。

尝试使用此模式:
search=@“\bdog”;
\b
匹配单词边界。

尝试使用此模式:
search=@“\bdog”;
\b
匹配单词边界。

Regex似乎是用于此作业的错误工具。您可以使用逗号分割字符串,然后按以“dog”开头的字符串筛选结果,然后计算出现的次数。@zzzzBov是的,我想知道,谢谢!类似
[^,]的东西怎么样dog
?-单词dog?之前的行首或逗号?@zzzzBov这种方法的问题是它还计算字符串“dogggg”@Kishore,考虑到问题的细节,这听起来很合适。Regex似乎是用于此工作的错误工具。您可以使用逗号分割字符串,然后用以“dog”开头的字符串过滤结果,然后计算出现的次数。@zzzzBov是的,我想知道,谢谢!像
[^]这样的东西怎么样dog
?-单词dog?@zzzzBov前的行首或逗号这种方法的问题是它还计算字符串“dogggg”@Kishore,鉴于问题的细节,这听起来很合适。