StringBuffer opdetail=new StringBuffer();
opdetail.append("<opDetail>");
opdetail.append("<recordInfo>");
opdetail.append("<fieldInfo><fieldChName>啊啊啊</fieldChName><fieldEnName>aaaaaa</fieldEnName><fieldContent>测试测试测试1111</fieldContent></fieldInfo>");
opdetail.append("<fieldInfo><fieldChName>啵啵啵</fieldChName><fieldEnName>bbbbbb</fieldEnName><fieldContent>测试测试测试2222</fieldContent></fieldInfo>");
opdetail.append("</recordInfo>");
opdetail.append("</opDetail>"); String aaa = opdetail.toString();
String bbb = "no";
String ccc = "";

Pattern p = Pattern.compile("<fieldEnName>([^</fieldEnName>]*)");
        Matcher m = p.matcher(aaa);
        
Pattern p1 = Pattern.compile("<fieldContent>([^</fieldContent>]*)");
        Matcher m1 = p1.matcher(aaa);
        
        while (m.find()) {
         ccc = m.group(1);
         m1.find();
            if(m.group(1).indexOf("aaaaaa")!=-1){
             bbb = m1.group(1);
            }
        }
我用这个代码,每次匹配fieldEnName时,只能匹配头一个字母头一个字母。怎么找到fieldEnName是aaaaaa的,fieldContent是测试测试测试1111的值。

解决方案 »

  1.   

    StringBuffer opdetail = new StringBuffer();
    opdetail.append("<opDetail>");
    opdetail.append("<recordInfo>");
    opdetail.append("<fieldInfo><fieldChName>啊啊啊</fieldChName><fieldEnName>aaaaaa</fieldEnName><fieldContent>测试测试测试1111</fieldContent></fieldInfo>");
    opdetail.append("<fieldInfo><fieldChName>啵啵啵</fieldChName><fieldEnName>bbbbbb</fieldEnName><fieldContent>测试测试测试2222</fieldContent></fieldInfo>");
    opdetail.append("</recordInfo>");
    opdetail.append("</opDetail>"); String aaa = opdetail.toString();
    String bbb = "no";
    String ccc = ""; Pattern p = Pattern.compile("<fieldEnName>(.*?)</fieldEnName>");
    Matcher m = p.matcher(aaa); Pattern p1 = Pattern.compile("<fieldContent>(.*?)</fieldContent>");
    Matcher m1 = p1.matcher(aaa); while (m.find()) {
    ccc = m.group(1);
    m1.find();
    if (m.group(1).indexOf("aaaaaa") != -1) {
    bbb = m1.group(1);
    System.out.println(ccc);
    System.out.println(bbb);
    }
    }
      

  2.   

    直接
    regex="(s?).*?<fieldInfo><fieldChName>.*?</fieldChName><fieldEnName>(.*?)</fieldEnName><fieldContent>(.*?)</fieldContent></fieldInfo>.*?";
    while(m.find()){
    System.out.println(m.group(1)+m.group(2););
    }