如何替换正则表达式中Match的一部分

本文关键字:Match 一部分 正则表达式 何替换 替换 | 更新日期: 2023-09-27 18:27:53

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

<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

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

如何替换正则表达式中Match的一部分

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

方法如下:

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有关regex语法的详细信息,以及指向更详细解释的链接。