盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

解读C#中的规则表达式

时间:2024/12/23作者:未知来源:盾怪网教程人气:

[摘要]r)+");   我们现在有了一个可以用于测试的Match类的实例,例如:if (m.Success)...   如果想使用匹配的字符串,可以把它转换成一个字符串:   Console.W...
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

     )? # 第二个组结束(可选)

    ) # 第一个组结束

    + # 匹配一次或多次

    ";

  //利用x修饰符忽略注释

  Regex r = new Regex(pat, "x");

  //获得组号码的清单

  int[] gnums = r.GetGroupNumbers();

  //首次匹配

  Match m = r.Match(text);

  while (m.Success)

   {

  //从组1开始

   for (int i = 1; i < gnums.Length; i++)

    {

    Group g = m.Group(gnums[i]);

  //获得这次匹配的组

    Console.WriteLine("Group"+gnums[i]+"=["+g.ToString()+"]");

  //计算这个组的起始位置和长度

    CaptureCollection cc = g.Captures;

    for (int j = 0; j < cc.Count; j++)

     {

     Capture c = cc[j];

     Console.WriteLine(" Capture" + j + "=["+c.ToString()

       + "] Index=" + c.Index + " Length=" + c.Length);

     }

    }

  //下一个匹配

   m = m.NextMatch();

   }

  这个例子的输出如下所示:

  Group1=[abra]

      Capture0=[abracad] Index=0 Length=7

      Capture1=[abra] Index=7 Length=4

  Group2=[cad]

      Capture0=[cad] Index=4 Length=3

  Group1=[abra]

      Capture0=[abracad] Index=12 Length=7

      Capture1=[abra] Index=19 Length=4

  Group2=[cad]

      Capture0=[cad] Index=16 Length=3

  Group1=[abra]

      Capture0=[abracad] Index=24 Length=7

      Capture1=[abra] Index=31 Length=4

  Group2=[cad]

      Capture0=[cad] Index=28 Length=3

[1] [2]  下一页



关键词:解读C#中的规则表达式




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版