先来个案例
对字符串 12\3%34_2%_%_2_2
要求替换字符串的 \ % _ (斜杠、百分号、下划线), 替换为 \% \_ \\
要求结果为 12\\3\%34\_2\%\_\%\_2\_2
写法
sting key="123%34_2%_%_2_2"; key=Regex.Replace(Regex.Replace(key, @"[\\_%]", @"\$0");
个人理解
$0 表示全匹配
$1 表示第一个括号内容
$2 第二个括号
$...以此类推 (注意,出现索引超出,$就会变成普通字符)
123abc456
(\d+)(\D+)(\d+)
匹配结果:全匹配
替换为 $0 结果,123abc456
替换为 $1 结果,整个匹配项,替换成 第一个括号内容了 ,也就是 123
替换为 $2 结果,整个匹配项,替换成 第2个括号内容了 ,也就是 abc
替换为 $5 结果,整个匹配项,替换成 普通字符 $5 ,也就是 $5