8

我知道我可以使用 RegEx 将所有出现的“a”、“b”或“c”替换为字符串中的黑斜线字符,如下所示:

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

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

4

2 回答 2

20

您可以使用MatchEvaluator委托Replace ...

Regex.Replace(input, @"[abc]", m => string.Format(@"\{0}", m.Value))
于 2012-05-22T00:00:06.093 回答
6

无需使用 any MatchEvaluatorRegex.Replace提供专用方法来访问替换模式中的整个匹配值:$&. 请参阅替换整个匹配

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

采用

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

C# 演示

var s = "abcd";
var result = Regex.Replace(s, @"[abc]", @"\$&");
Console.WriteLine(result);
// => \a\b\cd
于 2019-05-31T09:57:47.623 回答