我知道我可以使用RegEx来替换所有出现的'a','b'或'c',并在字符串中使用黑色字符:
string result = Regex.Replace(input, "[abc]", "\\");
但是如何用反斜杠替换每个匹配项后跟匹配的字符?
答案 0 :(得分:17)
您可以使用Match代表和MatchEvaluator转换每个this overload of Replace ...
Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))
答案 1 :(得分:1)
无需使用任何MatchEvaluator
,Regex.Replace
提供了专用方式来访问替换模式$&
中的整个匹配值。参见Substituting the Entire Match:
$&
替换将整个匹配项包含在替换字符串中。通常,它用于将子字符串添加到匹配字符串的开头或结尾。例如,({$&
)替换模式在每个匹配项的开头和结尾添加括号。如果没有匹配项,则$&
替换无效。
使用
var result = Regex.Replace(input, @"[abc]", @"\$&");
var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd