string a ="UAdd_1,UEdit_1,USee_1,UAdd_2,USee_2,UAdd_3,UEdit_3,USee_3,UAdd_4,UEdit_4,UDel_4,USee_4,UAdd_10,UEdit_10,UDel_10,USee_10"; 怎么把这段字符串拆分成: 
UAdd_1,UEdit_1,USee_1 
UAdd_2,USee_2 
UAdd_3,UEdit_3,USee_3 
UAdd_4,UEdit_4,UDel_4 
UAdd_10,UEdit_10,UDel_10,USee_10这个问题昨天以为解决了,用wackyboy朋友提供的方法
string a = "UAdd_1,UEdit_1,USee_1,UAdd_2,USee_2,UAdd_3,UEdit_3,USee_3,UAdd_4,UEdit_4,UDel_4,USee_4,UAdd_10,UEdit_10,UDel_10,USee_10";
            Regex re = new Regex(@"(?i)[a-z]+_([0-9]+)(,[a-z]+_(\1))*");
            MatchCollection mc = re.Matches(a);
            foreach (Match  m in mc)
            {
                Console.WriteLine(m.Value);
            }
但今天调试后发现了问题
如果 string a ="UAdd_1,USee_10";它会拆分成(不是我想要的结果):UAdd_1,USee_1
我想要的结果是:
UAdd_1
UAdd_10

解决方案 »

  1.   

    算啦还是写一个吧,免得你不知道我说撒测试:
     string a ="UAdd_1,USee_10";Regex re = new Regex(@"(?i)[,]?[a-z]+_([0-9]+[,])([a-z]+_(\1))*");
                MatchCollection mc = re.Matches(","+a+",");
                foreach (Match  m in mc)
                {
                    Console.WriteLine(m.Value);
                }
      

  2.   

    不对哦,输出后的结果是:,UAdd_1,USee_10, 
    我想要的是这种:
    UAdd_1
    USee_10
      

  3.   

    string a ="UAdd_1,USee_10"; Regex re = new Regex(@"(?i)[,]?[a-z]+_([0-9]+[,])([a-z]+_(\1))*"); 
                MatchCollection mc = re.Matches(","+a+","); 
                foreach (Match  m in mc) 
                { 
                    Console.WriteLine(m.Value+"\n"); 
                } 
    加个换行符就可以啦~
      

  4.   

    ((?<add>UAdd_\d+\b)|(?<eidt>UEdit_\d+\b)|(?<see>USee_\d+\b))+用这个正则表达示了, ,送代.保存命名分组, 这样排序就好办了
      

  5.   

    [A-Za-z]+_([0-9]+)(,[A-Za-z]+_(\1)(?![0-9]+))*用这个正则就可以了.