C# Regex.替换第一个组
本文关键字:第一个 替换 Regex | 更新日期: 2023-09-27 18:32:30
如何使用Regex.Replace中的第一个组?
我尝试使用文档所说的$1
。我是否使用分组也没关系?:
...
string text = "<font color="#aa66bb">farbig</font>"
/// this does not work
Regex.Replace(text, "<font color="#(?:[''d''w]{6})">", "<font color='"#$1'">");
// => "<font color='"#$1'">farbig</font>"
// this works fine though
Regex.Match(text, "<font color="#([''d''w]{6})">").Groups[1];
// => aa66bb
那么我在这里做错了什么?
难道只是你在这里使用了一个非捕获组吗?
Regex.Replace(this.Text, "<font color="#(?:[''d''w]{6})">", "<font color='"#$1'">");
是的:
(?:[''d''w]{6})
而不是
([''d''w]{6})
您可以使用@btw转义所有特殊字符:@"(?:['d'w]{6})"
另外,你试过吗
"<font color='"#" + $1 + "'">"
否则我认为 c# 不会从普通字符串值中知道 $1
这不是您提出的问题的答案,但是要执行您在示例中尝试的操作,您可以使用此处描述的HtmlDecode
并避免整个问题。