日期:2014-05-20  浏览次数:20672 次

怎么用正则表达式,取出特定的字符?
原始字符串是下面这样的:

<fieldInfo><fieldChName>人名</fieldChName><fieldEnName>Name</fieldEnName><fieldContent>张三</fieldContent></fieldInfo>
<fieldInfo><fieldChName>地址</fieldChName><fieldEnName>Address</fieldEnName><fieldContent>北京</fieldContent></fieldInfo>
<fieldInfo><fieldChName>电话</fieldChName><fieldEnName>Phone</fieldEnName><fieldContent>139345123</fieldContent></fieldInfo>
<fieldInfo><fieldChName>工资</fieldChName><fieldEnName>Salary</fieldEnName><fieldContent>1000</fieldContent></fieldInfo>

我用下面的代码,取到"地址"这一行,怎么再取到"北京"呢?

String detail = "<fieldInfo><fieldChName>人名</fieldChName><fieldEnName>Name</fieldEnName><fieldContent>张三</fieldContent></fieldInfo>
<fieldInfo><fieldChName>地址</fieldChName><fieldEnName>Address</fieldEnName><fieldContent>北京</fieldContent></fieldInfo>
<fieldInfo><fieldChName>电话</fieldChName><fieldEnName>Phone</fieldEnName><fieldContent>139345123</fieldContent></fieldInfo>
<fieldInfo><fieldChName>工资</fieldChName><fieldEnName>Salary</fieldEnName><fieldContent>1000</fieldContent></fieldInfo>";
Pattern p = Pattern.compile("<fieldChName>([^</fieldChName>]*)");
        Matcher m = p.matcher(detail );
        while (m.find()) {
            if(m.group(1).indexOf("地址")!=-1){
              //找到"地址"这一行后,怎么取到"北京"呢?  
            }
        }

------解决方案--------------------
 }
//正则提取
public static List<String> getContext() {
String html="kk<p>123456</p>ssss";
        List<String> resultList = new ArrayList<String>();
        Pattern p = Pattern.compile("<p>([^</p>]*)");//匹配<p>开头,</p>结尾的文档
        Matcher m = p.matcher(html );//开始编译
        while (m.find()) {
            resultList.add(m.group(1));//获取被匹配的部分
        }
        return resultList;
    }
提取出来之后在进行一次提取就行了。。
另外好像这个不是用正则提取的,应该是用xml读取的。