首页 > 解决方案 > 获取 Regex.Matches 在位置 0 开始匹配

问题描述

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

Regex.Matches(comma-separated string, certain string).Count用来抢号码。我唯一的问题是,如果它在字符串的开头排列,我希望它简单地算作匹配。

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

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 部分相匹配。

有什么方法可以让它只在识别从字符串开头开始的匹配时才算作匹配?还是我只是错误地使用了正则表达式?

标签: c#regex

解决方案


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

(?<=,|^)dog

这将执行“正向向后查找”以确保单词“dog”前面有一个逗号或在您正在搜索的字符串的开头。

更多关于正则表达式环视的信息:https ://www.regular-expressions.info/lookaround.html


推荐阅读