是不是像这样的(1(2(3)(4))(5))

解决方案 »

  1.   

    如果是指定名称?<name>的都依此向下继续,名称的按照顺序排在最后
      

  2.   

                string strContent = @"<a>aaaa</a>23423<img>bbbbbbbb</img>234<div>ccccccccccccc</div>";            
                Regex reg = new Regex(@"<(a|div)>([^<]+)?</\1>");            Console.WriteLine("/*\n------输出结果------------");            MatchCollection mc = reg.Matches(strContent);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m.Groups[0].Value + "     " + m.Groups[1].Value + "     " + m.Groups[2].Value);
                }
                /*
                ------输出结果------------
                <a>aaaa</a>     a     aaaa
                <div>ccccccccccccc</div>     div     ccccccccccccc
                */
      

  3.   

    你比较一下我的两个例子,当有name命名以后Groups[1]的值和没有命名的区别!           string strContent = @"<a>aaaa</a>23423<img>bbbbbbbb</img>234<div>ccccccccccccc</div>";            
                Regex reg = new Regex(@"<(?<name>a|div)>([^<]+)?</\<name>>");            Console.WriteLine("/*\n------输出结果------------");            MatchCollection mc = reg.Matches(strContent);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m.Groups[0].Value + "     " 
                        + m.Groups[1].Value + "     "
                        + m.Groups["name"].Value);
                }
                /*
                ------输出结果------------
                <a>aaaa</a>     aaaa     a
                <div>ccccccccccccc</div>     ccccccccccccc     div
                */
      

  4.   

    命名捕获基于左括号按从左到右的顺序依次编号(与非命名捕获类似),但在对所有非命名捕获进行计数之后才开始对命名捕获编号。string str = "abc5xyz8jkh";
    string res = @"((?<One>abc)\d+)?(?<Two>xyz)(.*)";
    /*
    Group[0]: abc5xyz8jkh
    Group[1]: abc5
    Group[2]: 8jkh
    Group[3]: abc
    Group[4]: xyz
    */
      

  5.   

    (?<g>6)(1(2(3)(4))(5))
    明白了?