用正则表达式解析xml
想把
<listenPort>8000</listenPort>
中间的数字(数字未知)替换成3000,搞了半天没搞出来代码如下
String regex = "<listenPort>(.+)</listenPort>";
Pattern p = Pattern.compile(regex);
        Matcher m  = p.matcher(xml);
        while(m.find()){
            xml = m.replaceAll("3000");
        }
是把整个"<listenPort>(.+)</listenPort>";都替换了,请问如何对括号里的内容进行替换啊?

解决方案 »

  1.   

    xml   =   m.replaceAll(" <listenPort>3000</listenPort> "); 
      

  2.   

    楼上的方法不好,我现在主要想知道java正则表达式如何对组进行替换,而不是对整个字符串
      

  3.   

    是这个意思吗?$1表示第一组(使用括号),$2表示第二组,依此类推。public class Test {
        public static void main(String[] args) {
            String xml = "<listenPort>8000</listenPort>,<listenPort>2000</listenPort>";
            String regex = "(<listenPort>)([0-9]+)(</listenPort>)"; 
            Pattern p = Pattern.compile(regex); 
            Matcher m = p.matcher(xml); 
            while(m.find()){ 
                xml = m.replaceAll("$13000$3"); 
            }
            System.out.println(xml);
        }
    }