请教各位大侠:
如何匹配下面中括号里面的内容:
(%[GD1108010110000](()*[GD1108010111100]*+-
我想取出中括号里面的内容,即取出GD1108010110000和GD1108010111100

解决方案 »

  1.   

    String value="(%[GD1108010110000](()*[GD1108010111100]*+-";
    Pattern p = Pattern.compile("[0-9A-Z]+");
    Matcher m = p.matcher(value);
    while(m.find()){
       System.out.println(m.group());
    }  
    正则出数字和字母嘛...-.-
      

  2.   

    String[] sa =str.split("[");
    然后再subString(0,sa[i].indexof("]"))
      

  3.   


    public static void main(String[] args) {
    String str = "(%[GD1108010110000](()*[GD1108010111100]*+-";
    Matcher m = Pattern.compile("\\[(.*?)\\]").matcher(str);
    while (m.find()) {
    System.out.println(m.group(1));
    }
    }
      

  4.   

    把正则条件换成  "\\[{1}[^\\]\t\n\r\f]+\\]{1}"  肿么样...=-=
      

  5.   


    String content = "[GD1108010110000][GD1108010111100]";
    String pattern = "\\[(GD1108010110000)\\]\\[(GD1108010111100)\\]";
    Matcher matcher = Pattern.compile(pattern).matcher(content);
    if (matcher.find()) {
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
    }不知道是不是这意思,你那(%[GD1108010110000](()*[GD1108010111100]*+-是目标字符序列还是正则表达式?因为目标字符序列中的括号什么的都要转译,写完看起来比较乱,给你化简了一下,中括号留下了,在正则表达式里转译了中括号。
      

  6.   


    这种方式是可以,但效率上会不会比正则表达式低呢?
    String[] sa =str.split("\\[");
    for (int i=1;i<sa.length;i++) {
    System.out.println(sa[i].substring(0,sa[i].indexOf("]")));
    }
      

  7.   

    用5L的就可以了,正则表达式,取[]里面的内容,即
    regex = "\\[(.*?)\\]"; 
      

  8.   


    我的意思就是"任意字符串加[要取出的任意字符串加]任意字符串加[要取出的任意字符串加]任意字符串加......",如1Aa&意[d@g1串]取+——99(df12[字d#fn32f]dfa%~78,我要取出“d@g1串”和“df12[字d#fn32f”
      

  9.   


    String str = "(%[GD1108010110000](()*[GD1108010111100]*+-";
    Pattern pattern = Pattern.compile("GD\\d{1,}");
    Matcher metcher = pattern.matcher(str);
    while(metcher.find()){
    System.out.println(metcher.group());
    }
      

  10.   


    郁闷,这个做法可以解决,但取出的内容包含了中括号,即“[GD1108010111100]”,我是想只要GD1108010111100
      

  11.   


    String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";
    String pattern = "\\[(.*)\\]\\[(.*)\\]";
    Matcher matcher = Pattern.compile(pattern).matcher(content);
    if (matcher.find()) {
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
    }试试吧,之前告诉你了,你没理解
      

  12.   


    String content = "(%[GD1108010110000](()*[GD1108010111100]*+-";
    String pattern = "\\(%\\[(.*)\\]\\(\\(\\)\\*\\[(.*)\\]\\*\\+-";
    Matcher matcher = Pattern.compile(pattern).matcher(content);
    if (matcher.find()) {
     System.out.println(matcher.group(1));
     System.out.println(matcher.group(2));
    } 运行这个吧,转译转的我头都大了
      

  13.   

    定这个   学习到了group()后面可以加组