我有一个这样的字符串:
{aaaa}{1122bbbb}{cccddd}...即由大括号包起来的一个或几个字符串的集合。
请问我怎么能用正则表达式把它一组组的分离出来呢?要这样的结果:
group(1) = "aaaa";
group(2) = "1122bbbb";
group(3) = "cccddd";
...多谢各位了!

解决方案 »

  1.   


    头和尾先去掉“{”和“}”,然后split("\}\{") 就可以拉
      

  2.   

    String a = "\\{[0-9a-zA-Z]*\\}";
      

  3.   

    String str="{aaaa}{1122bbbb}{cccddd}";
        str=str.replaceAll("\\{([^\\{\\}]+)\\}","$1@@@");
        String s[]=str.split("@@@");
        for(int i=0;i<s.length;i++){
          System.out.println(s[i]);
        }
      

  4.   

    或者:
        String str="{aaaa}{1122bbbb}{cccddd}";
    //    str=str.replaceAll("\\{([^\\{\\}]+)\\}","$1@@@");
        str=str.substring(1,str.length()-1);
        String s[]=str.split("\\}\\{");
        for(int i=0;i<s.length;i++){
          System.out.println(s[i]);
        }
      

  5.   


    String a = "\\{\\w+\\}"; String b = "{ada}-{asd3asd}-{asdasd}";
    Pattern p = Pattern.compile(a);

    Matcher m = p.matcher(b);

    while (m.find()) {
    String r = b.substring(m.start() + 1, m.end() - 1);
    System.out.println(r);
    }