首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

大家看看这个正则表达式如何写

2013-09-06 
大家看看这个正则表达式怎么写?StringBuffer opdetailnew StringBuffer()opdetail.append(opDetail)

大家看看这个正则表达式怎么写?


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的值。
[解决办法]
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);
}
}


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

热点排行