String str = " <node id='0' name='根节点'> <node id='0001' name='根节点1'> </0001node> </0node>";
System.out.println(str);
String node2 = " <node id='0002' name='根节点2'> </0002node>";
String reg = "( <node.*?>)(.*)( </0node>)";
str = str.replaceAll(reg, "$1$2" + node2 + "$3");这样吗?

解决方案 »

  1.   

    额,中间那个print是测试用的…… public static void main(String[] args) {
    String str = " <node id='0' name='根节点'> <node id='0001' name='根节点1'> </0001node> </0node>";
    String node2 = " <node id='0002' name='根节点2'> </0002node>";
    String reg = "( <node.*?>)(.*)( </0node>)";
    str = str.replaceAll(reg, "$1$2" + node2 + "$3");
        System.out.println(str);
    }输出:
     <node id='0' name='根节点'> <node id='0001' name='根节点1'> </0001node> <node id='0002' name='根节点2'> </0002node> </0node>
      

  2.   


        String str = "<node id='0' name='根节点'> <node id='0001' name='根节点1'> </0001node> </0node>"; 
        String node2 = " <node id='0002' name='根节点2'> </0002node>";      
        String s = "(<node[^>]*>)(.*)(</0node>)";     
        Matcher m = Pattern.compile(s).matcher(str);
        if(m.matches()){
        System.out.println(m.group(1)+m.group(2)+node2+m.group(3));
        }
      

  3.   

    String str = " <node id='0' name='根节点'> <node id='0001' name='根节点1'> </0001node> </0node>";
    String node2 = " <node id='0002' name='根节点2'> </0002node>";
    String reg = "(<node[^>]*>)(.*)( </0node>)";
    str = str.replaceAll(reg, "$1$2"+node2+"$3"); 
    System.out.println(str);
      

  4.   

    郁闷,为什么我
     Pattern p = Pattern.compile(_regexp);
     Matcher m = p.matcher(str);
     boolean b = m.matches();
    总返回false,
    直接
    str = str.replaceAll(_regexp, "$1$2"+nodes+"$3");
    是可以替换的呢?
    public static void main(String[] args) { String str = "<XML><node id='0' name='备品备件字典库'></0node>";
    String _regexp = "(<node id='0' name='.*?'>)(.*?)(</0node>)";
    String nodes = "<node id='0001' name='信息设备'></0001node>";
     Pattern p = Pattern.compile(_regexp);
     Matcher m = p.matcher(str);
     boolean b = m.matches(); if (b){
    str = str.replaceAll(_regexp, "$1$2"+nodes+"$3");
    System.out.println(str);
    }else{
    System.out.println("false");
    } System.out.println(str); }
      

  5.   

    matches要匹配整个字符串才返回TRUE,换成这样试试。
    String _regexp = ".*?(<node id='0' name='.*?'>)(.*?)(</0node>).*?";