读书人

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

发布时间: 2013-09-06 10:17:17 作者: rapoo

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


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););
}

读书人网 >J2EE开发

热点推荐