如何在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
那么,我在这里做错了什么?
最佳答案
可能只是您在这里使用了非捕获组?
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
关于c# - C#正则表达式替换第一组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10350828/