3

如何使用 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

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

4

2 回答 2

1

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

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

于 2012-04-27T12:53:43.290 回答
0

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

于 2012-04-27T12:54:24.843 回答