使用正则表达式在匹配之前插入字符

本文关键字:插入 字符 正则表达式 | 更新日期: 2023-09-27 18:34:48

我知道我可以使用正则表达式将字符串中所有出现的"a"、"b"或"c"替换为黑斜杠字符,如下所示:

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

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

使用正则表达式在匹配之前插入字符

您可以使用 MatchEvaluator 委托和此重载 Replace...

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

不需要使用任何MatchEvaluatorRegex.Replace提供了专用的方法来访问替换模式中的整个匹配值:$&。请参阅替换整个匹配项:

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

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

C# 演示:

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