正则表达式替换匹配所有而不是单个

时间:2016-05-10 16:28:48

标签: c# regex string replace

我试图了解正则表达式替换方法。我写了一个函数,它应该在第一个大写字母之前插入一个空格,该大写字母前面没有大写字母。

var tmpDisplay = Regex.Replace(name, "([^A-Z ])([A-Z])", "$1 $2");

当我运行它时,它会替换所有未加上大写字母的大写字母。

我查了MSDN并且似乎并没有提到正则表达式替换了字符串上的act全局而不是仅匹配第一种情况。

我怎样才能替换单个值?任何人都可以提供有关此问题的文档吗?

1 个答案:

答案 0 :(得分:7)

静态Regex.Replace方法没有max occurrence参数,但类实例有:

var rx = new Regex(@"([^A-Z ])([A-Z])");
Console.WriteLine(rx.Replace("NamePeteParker", "$1 $2", 1)); // Replace just once
                                                       ^^

请参阅IDEONE demo

来自MSDN

  

Regex.Replace Method (String, MatchEvaluator, Int32)
  在指定的输入字符串中,将匹配正则表达式模式的指定的最大字符串数替换为MatchEvaluator委托返回的字符串。