正在阅读:解读 C# 中的正则表达式解读 C# 中的正则表达式

2004-10-08 14:53 出处:CSDN 作者:hanlichou 责任编辑:linjixiong

  简单匹配

  我们首先从使用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");

  
  这个语句返回字符串abra,其前导和后缀的空格都去掉了。
  
  上面的模式对于删除任意字符串中的前导和后续空格都非常有用。在C#中,我们还经常使用字母字符串,在一个字母字符串中,编译程序不把字符“ \” 作为转义字符处理。在使用字符“\”指定转义字符时,@"..."是非常有用的。另外值得一提的是$1在字符串替换方面的使用,它表明替换字符串只能包含被替换的字符串。
  
  匹配引擎的细节

  现在,我们通过一个组结构来理解一个稍微复杂的例子。看下面的例子:
  


  string text = "abracadabra1abracadabra2abracadabra3";
  
  string pat = @"
  
  ( # 第一个组的开始
  
  abra # 匹配字符串abra
  
  ( # 第二个组的开始
  
  cad # 匹配字符串cad
  
  )? # 第二个组结束(可选)
  
  ) # 第一个组结束
  
  + # 匹配一次或多次
  
  ";


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品