String strs="<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>" 
       +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
       +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style="clor:red">出口温度[320001] </SPAN>"
       +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style="clor:red">出口压力[540002] </SPAN>"
       +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b>√ </b></SPAN>;怎样用正则表达示得到<span>标签 类似[100001][1],出口温度[320001]里面所有的内容?用集合存起来。

解决方案 »

  1.   

    have a try
    String reg = "(?:<SPAN|<span)\\s*.*?>\\s*(.*?)?\\s*(?:</SPAN>|</span>)";
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(strs);
    List<String> list = new ArrayList<String>();
    while (m.find()) {
        list.add(m.group(1));
        System.out.println(m.group(1));
    }
      

  2.   


    public static void main(String[] args) {
    String strs="<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>"  
      +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
      +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style=\"clor:red\">出口温度[320001] </SPAN>"
      +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style=\"clor:red\">出口压力[540002] </SPAN>"
      +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b>√ </b></SPAN>";
    List<String> list = new ArrayList<String>();
    Matcher m = Pattern.compile("(?is)<span.*?>(.*?)</span>").matcher(strs);
    while(m.find()){
    //System.out.println(m.group(1));
    list.add(m.group(1));
    }
    System.out.println(list);
    }
      

  3.   

    这个好像可以。String regex = "<SPAN[^>]*>([^<]*|<b>[^<]*</b>)</SPAN>";
      

  4.   

    Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(strs);
            while(m.find())
            {
                System.out.println(m.group(1));
            }
      

  5.   

    用is标志好一点
    LS的怎么都不考虑一下标签分开空格,比如一个标签
    <SPANA xxx>yyyy</SPAN>,一个非法的标签也被扫面通过了String reg = "(?is:<span)\\s*.*?>\\s*(.*?)?\\s*(?is:</span>)";
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(strs);
    List<String> list = new ArrayList<String>();
    while (m.find()) {
        list.add(m.group(1));
        System.out.println(m.group(1));
    }
      

  6.   

    String reg = "(?is:<span)\\s+.*?>\\s*(.*?)?\\s*(?is:</span>)";
    String strs="<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>"  
                  +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
                  +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style=\"clor:red\">出口温度[320001] </SPAN>"
                  +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style=\"clor:red\">出口压力[540002] </SPAN>"
                  +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b>√ </b></SPAN>"
                  +"<SPANXX id=xxx>yyy</SPAN>"; //for example
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(strs);
    List<String> list = new ArrayList<String>();
    while (m.find()) {
        list.add(m.group(1));
        System.out.println(m.group(1));
    }
      

  7.   

    可能是我阐述问题有错误 , 大家都没明白我意思>..<
    我要的集合是存放类似[100001][1],XXXXXX[320001]的内容,而不要最后一个 <b>√ </b>
    (XXXXXX---代表任意文字)
      

  8.   


    String reg = "(?is:<span)\\s+.*?>\\s*((?!<.*?>\\s*)(.*?)(?!</.*?>))\\s*(?is:</span>)";
    String strs="<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>"  
                  +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
                  +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style=\"clor:red\">出口温度[320001] </SPAN>"
                  +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style=\"clor:red\">出口压力[540002] </SPAN>"
                  +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b><a>√ </a></b></SPAN>"
                  +"<SPANXX id=xxx>yyy</SPAN>"; //for example
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(strs);
    List<String> list = new ArrayList<String>();
    while (m.find()) {
        list.add(m.group(2));
        System.out.println(m.group(2));
    }
      

  9.   

    maybe this is better
    String reg = "(?is:<span)\\s+.*?>\\s*((?:<.*?>\\s*)*(.*?)(?:</.*?>)*)\\s*(?is:</span>)";
    String strs="<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>"  
                  +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
                  +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style=\"clor:red\">出口温度[320001] </SPAN>"
                  +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style=\"clor:red\"><a>出口?力[540002] </a></SPAN>"
                  +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b><a>√ </a></b></SPAN>"
                  +"<SPANXX id=xxx>yyy</SPAN>"; //for example
    Pattern p = Pattern.compile(reg);
    Matcher m = p.matcher(strs);
    List<String> list = new ArrayList<String>();
    while (m.find()) {
        list.add(m.group(2));
        System.out.println(m.group(2));
    }
      

  10.   


    ArrayList<String> al = new ArrayList<String>();
    Pattern p = Pattern.compile("(<SPAN.*?>)([^\\d]*?(?:\\d+?)[^\\d[^<]]*?)(?=[<])");
    String str = "<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[010001][2] </SPAN>"  
                +"<SPAN id=dfe540c8-1161-45cd-83ae-120eee728849 contentEditable=false Type=2>[100001][1] </SPAN>"
                +"<SPAN id=cds540c3-2321-45cd-83ae-120eee728849 style=\"clor:red\">出口温度[320001] </SPAN>"
                +"<SPAN id=df6540c8-5465-45cd-83ae-120eee728849 style=\"clor:red\">出口压力[540002] </SPAN>"
                +"<SPAN id=df3340c8-5465-45cd-83ae-120eee712849><b>√ </b></SPAN>";
    Matcher m = p.matcher(str);
    while(m.find()) {
    al.add(m.group(2));
    System.out.println(m.group(2));
    }