如何正则表达式仅搜索/替换.NET中字符串中的第一个匹配项?

时间:2020-03-06 14:52:20  来源:igfitidea点击:

似乎.NET Regex.Replace方法会自动替换所有匹配的匹配项。我可以提供一个MatchEvaluator委托,该委托在第一次替换后返回匹配的字符串,不做任何更改,但这对我来说听起来效率很低。

第一次更换后最有效的停止方法是什么?

解决方案

从MSDN:

Replace(String, String, Int32)
Within a specified input string, replaces a specified maximum number of strings that 
  match a regular expression pattern with a specified replacement string.

这不是你想要的吗?

只是为了回答原始问题...以下正则表达式仅匹配单词foo的第一个实例:

(?<!foo.*)foo

此正则表达式使用负向后查找(?<!)来确保在匹配foo之前未找到foo实例。