对C#中正则表达式的一些解读和总结(2)_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:从Internet上抓取指定URL的源码的方案(C#)
引言:   在做无线项目的时候,与通讯公司的数据通讯有一部分是通过XML交互的,所以必须要动态抓取通讯公司提供的固定的Internet上的数据,便研究了一下如何抓取固定url上的数据,现与

  上面的模式对于删除任意字符串中的前导和后续空格都非常有用。在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();
   }

分享:ASP.NET对IIS中的虚拟目录进行操作
//假如虚拟目录名为"Webtest",先在项目中引用 //System.DirectoryServices.dll,再 using System.DirectoryServices; protected System.DirectoryServices.DirectoryEntry di

来源:模板无忧//所属分类:.Net教程/更新时间:2008-08-22
相关.Net教程