使用RegEx在匹配前插入字符

时间:2012-05-21 23:55:41

标签: c# regex

我知道我可以使用RegEx来替换所有出现的'a','b'或'c',并在字符串中使用黑色字符:

string result = Regex.Replace(input, "[abc]", "\\");

但是如何用反斜杠替换每个匹配项后跟匹配的字符?

2 个答案:

答案 0 :(得分:17)

您可以使用Match代表和MatchEvaluator转换每个this overload of Replace ...

Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))

答案 1 :(得分:1)

无需使用任何MatchEvaluatorRegex.Replace提供了专用方式来访问替换模式$&中的整个匹配值。参见Substituting the Entire Match

  

$&替换将整个匹配项包含在替换字符串中。通常,它用于将子字符串添加到匹配字符串的开头或结尾。例如,({$&)替换模式在每个匹配项的开头和结尾添加括号。如果没有匹配项,则$&替换无效。

使用

var result = Regex.Replace(input, @"[abc]", @"\$&");

C# demo

var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd