string input = @"scf{0}dhf{1}do{2}vsf{3}pp{4}";
            Regex regex = new Regex(@"(?<val>{\d+})", RegexOptions.Multiline);
 
            MatchCollection matches = regex.Matches(input);
            for(int i = 0; i < matches.Count; i++)
            {
                if(i % 2 == 0) Console.Write(matches[i].Groups["val"].Value+",");
            }

解决方案 »

  1.   

     string input = @"scf{0}dhf{{1}}do{{{2}}}vsf{{{{3}}}}pp{{{{{4}}}}}";
                var list = Regex.Matches(input, @"[{]+\d+[}]+").OfType<Match>().Select(t => t.Value).Where(t=>Regex.IsMatch(Regex.Replace(t,"{{|}}",""),@"^{\d+}$")).ToList();
                list.ForEach(t=>Console.WriteLine(t));
      

  2.   

    两边的括号数量确定相等吗?如果是这样呢?
    String str="{{{{{12}}}";
    str="{{{{12}}}}}";
      

  3.   

    两边的括号数量确定相等吗?如果是这样呢?
    String str="{{{{{12}}}";
    str="{{{{12}}}}}";

    2边不一定相等,只要是奇数才有效
      

  4.   

    http://bbs.csdn.net/topics/390708966?page=1#post-396750286