string str="302#13710506400#0302#13710506400#0302#15919319402#0302#15919319402#0"正则取出来 的信息分组 (去重复)结果如下302,13710506400,0302,15919319402,0
谢谢!

解决方案 »

  1.   


     string str = "302#13710506400#0302#13710506400#0302#15919319402#0302#15919319402#0";
                Regex reg = new Regex(@"((\d+)#(\d+)#(\d))+");
               
                var list = new List<string>();
                foreach (Match m in reg.Matches(str))
                {
                    foreach (Capture p in m.Groups[1].Captures)
                    {
                        var s=p.Value.Replace("#",",");
                        if (!list.Contains(s))
                        {
                            list.Add(s);
                            Console.WriteLine(s);
                        }
                     
                    } 
                }
      

  2.   

                string str = "302#13710506400#0302#13710506400#0302#15919319402#0302#15919319402#0";
                Regex reg = new Regex(@"((\d+#\d+#\d).*?)\2");
                while (str != (str = reg.Replace(str, "$1"))) ;
                str = str.Replace('#', ',');
                reg = new Regex(@"\d+,\d+,\d");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
      

  3.   


                string str = "302#13710506400#0302#13710506400#0302#15919319402#0302#15919319402#0302#13710506400#1";
                Regex reg = new Regex(@"((\d+#\d+#\d).*?)\2");
                while (str != (str = reg.Replace(str, "$1"))) ;
                str = str.Replace('#', ',');
                reg = new Regex(@"\d+,\d+,\d");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
    /*
    302,13710506400,0
    302,15919319402,0
    302,13710506400,1*/