String a = "<a></a><a></a><a></a><a></a><a></a><KPRQ>2008-1-1</KPRQ><a></a><a></a><a></a><a></a><a></a><RKRQ>2009-10-11</RKRQ><a></a><a></a><a></a><a></a>";<a></a>代表的其他数据是不定的,如何把<KPRQ></KPRQ>和<RKRQ></RKRQ>中的数据找出来

解决方案 »

  1.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class TestReplaceAll { public static void main(String[] args) {
    String s = " <a> </a> <a> </a> <a> </a> <a> </a> <a> </a> <KPRQ>2008-1-1 </KPRQ> <a> </a> <a> </a> " +
    "<a> </a> <a> </a> <a> </a> <RKRQ>2009-10-11 </RKRQ> <a> </a> <a> </a> <a> </a> <a> </a>"; 
    Matcher matcher = Pattern.compile("((?<=<KPRQ>)([^<]*)(?=</KPRQ>))|((?<=<RKRQ>)([^<]*)(?=</RKRQ>))").matcher(s);
    while(matcher.find()){
    System.out.println(matcher.group());
    }
    }
    }
      

  2.   

    有多个KPRQ照样可以取出来,你可以试一下。
      

  3.   

    1L的正则改为
     Matcher matcher = Pattern.compile("((?<=<KPRQ>).*?(?=</KPRQ>))|((?<=<RKRQ>).*?(?=</RKRQ>))").matcher(s);
      

  4.   

    indexOf + sunString 也可以吧?只是觉得有点土而已!