static void Main()
        {
            Regex r = new Regex("i(n)");            Match mc = r.Match("maching");
            GroupCollection gr = mc.Groups;
            for (int i = 0; i < gr.Count; i++)
            {
                Group g = gr[i];
                Console.WriteLine("{0}:{1}", g.Value, g.Index);
            }
这段代码是怎么工作的?为什么找in却找出来in和n呢?

解决方案 »

  1.   

    看了些资料 大概懂了点 匹配的时候是不是把in看成一个组 把n看成一个组 还是匹配in 但是在匹配过程中把n这个分组存到groups里头 把in这个分组也存到groups里头 然后就可以通过groups的captures来访问刚才捕获的分组了。
    是不是该这样理解?
      

  2.   

      Regex r = new Regex("i(n)");
    换成  Regex r = new Regex("in");就行了!
      

  3.   

    Regex r = new Regex("i(n)");
    这个正则式会匹配两个分组,第一个分组就是整个表达式所匹配的,第二个就是匹配你的小括号内匹配的分组
    如果你只想匹配in,则取消第二个分组就可以了,也就是去掉n的小括号,即Regex r = new Regex("in");
      

  4.   

    去看一下捕获组的概念在匹配成功的情况下,Groups[0]永远是整个正则表达式所匹配到的内容,在你的例子里就是in其它非命名捕获组是从1开始按顺序编号的,在你的例子里,还有一个捕获组,那就是(n),它匹配的内容n保存在Groups[1]里此时的gr.Count是等于2的
      

  5.   

    Regex r = new Regex("in");