如何使用正则表达式来替换特定的匹配项(例如“最后一个”或“倒数第二个”)?

2024-03-23

我正在尝试替换字符串中的单个(最后一个或倒数第二个)匹配项。我已经有了正则表达式并且它可以工作,但它替换了所有项目,然后我必须返回并替换单个项目。



Regex.Replace(BaseString, MatchString, ReplacementString)
  

我想使用 MatchEvaluator 但不知道如何使用。

有什么帮助吗?


MatchEvaluator 只是一个委托。你传入你的函数。

在你的情况下,使用类似的东西:



Regex.Replace(BaseString, MatchString, delegate(Match match)
                    {
                        bool last = match.NextMatch().Index == 0;

                        if (last)
                            return match.Value;
                        else
                            return ReplacementString;
                    }, RegexOptions.Compiled);
  

此代码会跳过最后一个匹配项。您还可以以类似的方式检查倒数第二个匹配项。

另请参阅此问题以获取有关如何使用 MatchEvaluator 的更多信息:Regex.Replace 中的 MatchEvaluator 如何工作? https://stackoverflow.com/questions/2587866/how-does-matchevaluator-works-c-regex-replace

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用正则表达式来替换特定的匹配项(例如“最后一个”或“倒数第二个”)? 的相关文章

随机推荐