string beMatchedText = "a,b,c(a,b(tt,xx)),d(aa,cc)";
取得结果
a
b
c(a,b(tt,xx))
d(aa,cc)
用正则表达式取得上述结果
求正则表达式

解决方案 »

  1.   

    string beMatchedText = "a,b,c(a,b(tt,xx)),d(aa,cc)";
    string[] result=Regex.Split(beMatchedText ,@"(?<!\(\w+),");
      

  2.   


    string str = "a,b,c(a,b(tt,xx)),d(aa,cc)";
                Regex reg = new Regex(@"(?is)([a-z]\(((?<Open>\()|(?<-Open>\))|[^()])*(?(Open)(?!))\))|[a-z]");
                reg.Matches(str).OfType<Match>().ToList().ForEach(x =>
                {
                    Console.WriteLine(x.Value);
                });
                Console.Read();
      

  3.   


       string beMatchedText = "a,b,c(a,b(tt,xx)),d(aa,cc)";
                    string[] temp_arr=Regex.Matches(beMatchedText, @"[a-z]+?(\(((?<O>\()|(?<-O>\))|.)*?(?(O)(?!))\))?(?=,|$)").Cast<Match>().Select(a=>a.Value).ToArray();
                    /*
                           [0] "a" string
                           [1] "b" string
                           [2] "c(a,b(tt,xx))" string
                           [3] "d(aa,cc)" string                 */
      

  4.   

    这个正则不匹配的不全啊,像下面的产生的应该是
    a,b,c(a,b(tt,xx)),d(aa,cc),xx(tt,aa,tt(ss,tt,aa(aaa,tt(ttt))))a
    b
    c(a,b(tt,xx))
    d(aa,cc)
    xx(tt,aa,tt(ss,tt,aa(aaa,tt(ttt))))
      

  5.   

    那就更改一下:(?<!\([\w,]+),
      

  6.   

    今天突然发现这个正则表达式,不能匹配xx(tt,aa,tt(ss,tt,aa(aaa,tt(ttt))),测试) 它会把“测试)”这里截断,分成两个字符串,
    其实我的这个字符串后面是不确有多少个逗号分隔开来的,其实相当于 A(A1,B1,.....),且里面的A1和B1都可能后面还带括号(A11,.......)(B11,.....),和迭代一样.请问怎么改,谢谢。
      

  7.   

    不是他们的问题是你自己老改变条件的问题(加那些迭代,加汉子字符等)。 你就相当于总是变更需求的客户,嗯嗯 要缴纳变更项目费用的(?<![\((][^\(\S,]+) 正则看了一点 好久没看了 试试把,可能语法有问题 目的是把\w换成不是(的非空字符。