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, "&lt;font color=&quot;#(?:[''d''w]{6})&quot;&gt;", "<font color='"#$1'">");
// => "<font color='"#$1'">farbig&lt;/font&gt;"
// this works fine though  
Regex.Match(text, "&lt;font color=&quot;#([''d''w]{6})&quot;&gt;").Groups[1];
// => aa66bb

那么我在这里做错了什么?

C# Regex.替换第一个组

难道只是你在这里使用了一个非捕获组吗?

Regex.Replace(this.Text, "&lt;font color=&quot;#(?:[''d''w]{6})&quot;&gt;", "<font color='"#$1'">");

是的:

(?:[''d''w]{6})

而不是

([''d''w]{6})

您可以使用@btw转义所有特殊字符:@"(?:['d'w]{6})"

另外,你试过吗

"<font color='"#" + $1 + "'">"

否则我认为 c# 不会从普通字符串值中知道 $1

这不是您提出的问题的答案,但是要执行您在示例中尝试的操作,您可以使用此处描述的HtmlDecode并避免整个问题。