msdn中描述 反向引用引用组的最近的定义(当从左到右匹配时,最靠近左侧的定义)。具体地讲,就是当组建立多个捕获时,反向引用引用最近的捕获。例如,(?<1>a)(?<1>\1b)* 使用捕获模式 (a)(ab)(abb) 来匹配 aababb。循环限定符不清除组定义。红色部分测试过有错误,如果<1>是分组构造名的话,应该是不能取数字的。

解决方案 »

  1.   

    那个数字应该是一个字符串吧
    需要用 m.Groups["1"].Value 
    而数字的,。。
      

  2.   


    msdn那段说明,简直是让人恼火,,,,,求大神解释吧,
      

  3.   

           string pattern = @"(?<1>a)(?<1>\1b)*";
            string input = "aababb";
            //
            Match m = Regex.Match(input, pattern);
            if (m.Success == true)
                Console.WriteLine("Input: \"{0}\" \nMatch: \"{1}\"", input, pattern);
            else
                Console.WriteLine("Match failed.");
        }
    程序没有问题,用@作原义解释。
      

  4.   

    补充
    "(?<1>a)(?<1>\1b)*";
    (?<1>a)匹配"aababb"中a,
    (?<1>\1b)匹配"aababb"中ab
    *匹配abb