如何在Regex.Replace中使用第一组?
我尝试过像documentation那样使用$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
那我在这里做错了什么?
答案 0 :(得分:1)
这可能仅仅是你在这里使用非捕获组吗?
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
答案 1 :(得分:0)
这不是您要问的问题的答案,但要在您的示例中执行您尝试的操作,您可以使用here所述的HtmlDecode
并避免整个问题。