如何在Regex.Replace中使用第一组?
我试过像documentation所说使用$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


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

最佳答案

可能只是您在这里使用了非捕获组?

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

关于c# - C#正则表达式替换第一组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10350828/

10-12 14:46