gpt4 book ai didi

c# - 如何替换正则表达式中匹配的一部分

转载 作者:行者123 更新时间:2023-11-30 22:14:53 29 4
gpt4 key购买 nike

我有一个看起来像这样的字符串

<span class=SpellE>Content</span>

我还有一个正则表达式可以在我的文本中搜索那种短语,更特别的是搜索一个短语:

"\w</span>"

换句话说:a 前面有一个符号,除了空格。

所以,我有这个:

const string pattern = "\\w</span>";
const string replace = "&nbsp;</span>";
var rgx = new Regex(pattern);
var resultAfterRegex = rgx.Replace(result, replace);
return resultAfterRegex;

但在结果中它也替换了之前的字母,我丢失了它。它是这样的:

Conten_ 最后缺少 t

你知道我如何只替换 而没有前面的字母吗?

最佳答案

问题是正则表达式正在消耗匹配的所有内容,包括单个字母。

实现方式如下:

const string pattern = "(\\w)</span>";
const string replace = "$1&nbsp;</span>";

它所做的是使用 () 捕获单个字母匹配,然后使用 $1 将其放入替换的字符串中。

正如@dasblinkenlight 所指出的,您还可以使用非捕获后视,如下所示:

const string pattern = "(?<=\\w)</span>";
const string replace = "&nbsp;</span>";

这里的模式使用特殊语法非常粗略地说 \w 必须存在但不是实际匹配的一部分。所以这个方法可能更接近你想要的,因为它只匹配你想要替换的东西。

参见 http://msdn.microsoft.com/en-us/library/az24scfc.aspx有关正则表达式语法的详细信息以及指向更详细解释的链接。

关于c# - 如何替换正则表达式中匹配的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271844/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com