【问题标题】:Using RegEx to Insert Character before Matches使用正则表达式在匹配前插入字符
【发布时间】:2019-05-31 17:57:47
【问题描述】:

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

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

但是我怎样才能用反斜杠后跟匹配的字符替换每个匹配项?

【问题讨论】:

    标签: c# regex


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      无需使用任何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
      

      【讨论】:

        猜你喜欢
        • 2018-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多