我正在尝试替换字符串中的单个(最后一个或倒数第二个)匹配项。我已经有了我的正则表达式并且它可以工作,但它会替换所有项目,然后我必须重新运行并替换单个项目。
Regex.Replace(BaseString, MatchString, ReplacementString)
我想使用 MatchEvaluator,但不知道如何使用。
有什么帮助吗?
最佳答案
MatchEvaluator 只是一个委托(delegate)。您传入函数。
在你的情况下,使用类似的东西:
Regex.Replace(BaseString, MatchString, delegate(Match match) { bool last = match.NextMatch().Index == 0; if (last) return match.Value; else return ReplacementString; }, RegexOptions.Compiled);
此代码跳过最后一场比赛。您还可以以类似的方式检查倒数第二个匹配项。
另请参阅此问题以获取有关如何使用 MatchEvaluator 的更多信息:How does MatchEvaluator in Regex.Replace work?
关于c# - 您如何使用正则表达式来替换特定的匹配项(例如 "last"或 "second to last")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566867/