谈谈C# replace在正则表达式中的意义

2019-12-30 11:41:57刘景俊

  MatchEvaluator: 执行替换操作时使用的代理; 

  Regex: 编译后的表达式的实例。

  Regex类中还包含一些静态的方法:

  Escape: 对字符串中的regex中的转义符进行转义; 

  IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值; 

  Match: 返回Match的实例; 

  Matches: 返回一系列的Match的方法; 

  Replace: 用替换字符串替换匹配的表达式; 

  Split: 返回一系列由表达式决定的字符串; 

  Unescape:不对字符串中的转义字符转义。 

简单匹配

  我们首先从使用Regex、Match类的简单表达式开始学习。 

 

复制代码
Match m = Regex.Match("abracadabra", "(a|b|r)+"); 

 

我们现在有了一个可以用于测试的Match类的实例,例如:if (m.Success)... 

如果想使用匹配的字符串,可以把它转换成一个字符串: 

 

复制代码
Console.WriteLine("Match="+m.ToString()); 

 

这个例子可以得到如下的输出: Match=abra。这就是匹配的字符串了。 

字符串的替换

  简单字符串的替换非常直观。例如下面的语句: 

 

复制代码
string s = Regex.Replace("abracadabra", "abra", "zzzz"); 

 

它返回字符串zzzzcadzzzz,所有匹配的字符串都被替换成了zzzzz。

  现在我们来看一个比较复杂的字符串替换的例子: 

 

复制代码
string s = Regex.Replace(" abra ", @"^s*(.*?)s*$", "$1");