如何替换正则表达式中Match的一部分
本文关键字:Match 一部分 正则表达式 何替换 替换 | 更新日期: 2023-09-27 18:27:53
我有一个字符串看起来像这个
<span class=SpellE>Content</span>
我还有一个正则表达式,它在我的文本中搜索这类短语,更具体地说是搜索一个短语:
"'w</span>"
换句话说:a前面除了空格外还有一个符号。
所以,我有这个:
const string pattern = "''w</span>";
const string replace = " </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 </span>";
这样做的目的是使用()
捕获单字母匹配,然后使用$1
将其放入替换的字符串中。
正如@dasblinkenlight所指出的,你也可以使用如下的非捕获后备:
const string pattern = "(?<=''w)</span>";
const string replace = " </span>";
这里的模式使用特殊的语法非常粗略地表示'w
必须存在,但不是实际匹配的一部分。所以这个方法可能更接近你想要的,因为它只匹配你想要替换的东西。
请参阅http://msdn.microsoft.com/en-us/library/az24scfc.aspx有关regex语法的详细信息,以及指向更详细解释的链接。