去掉注释<!-- -->
我用str.replaceAll("<!--.*-->","");不行啊。

解决方案 »

  1.   

    如果你的意思是把注释的符号去掉,让里面的代码起作用的话:str.replace("<!--", "").replace("-->", "")
      

  2.   

    * 代表>=0个。
    + 代表>=1个。肯定用+号,不用要*号
      

  3.   

    忘了,把注释里的东西去掉。。连<!---->也去掉。。
      

  4.   

    我这有个正则表达式的文档  希望对你有用 http://download.csdn.net/detail/g1512161790/3584080
      

  5.   

    str.replaceAll("<!--.+?-->","");
      

  6.   

    (<!--(\s|.)*?-->)
    可以多行。。
      

  7.   


    ouotuo你那个replaceAll一行没问题,一个文件的话,就报
    Exception in thread "main" java.lang.StackOverflowError
    at java.util.regex.Pattern$GroupHead.match(Unknown Source)
    at java.util.regex.Pattern$Loop.match(Unknown Source)
    at java.util.regex.Pattern$GroupTail.match(Unknown Source)
    at java.util.regex.Pattern$Ctype.match(Unknown Source)
    at java.util.regex.Pattern$Branch.match(Unknown Source)
    我只是想这样。。 FileReader fr = new FileReader("D:\\apache-tomcat-5.5.25_2\\conf\\server.xml");
    BufferedReader br = new BufferedReader(fr);
    String str = null;
    StringBuffer sb = new StringBuffer();
    while((str = br.readLine()) != null)
    {
    sb.append(str);
    }
    br.close();
    fr.close();
    String result = sb.toString().replaceAll("(<!--(\\s|.)*?-->)", "");
    //就是要在这里填个正则表达式。。
    System.out.println(result);
      

  8.   


    public static void main(String[] args) throws IOException {
    FileReader reader = new FileReader(RegexTest.class.getResource("/server.xml").getFile());
    char buffer[] = new char[1000];
    int i=0; StringBuilder sb = new StringBuilder();
    while((i=reader.read(buffer))!=-1){
    sb.append(buffer,0,i);
    } reader.close();
    String str = sb.toString();
    System.out.println(str);

    String h = str.replaceAll("<!--(?:\\n|.)*?-->", "");
    System.out.println(h);
    }
    优化下
      

  9.   

    多行的话直接str.replaceAll("(?s)<!--.*-->","");
      

  10.   


    str.replaceAll("(?s)<!--.*?-->","");
      

  11.   

    是什么编码,能不能把server.xml发给我下。
      

  12.   

    就是tomcat的server.xml啊。。是utf-8的。。
      

  13.   

    的确有异常的情况。
    第一次抛出异常,由于<!--太多,所以匹配的就很多,造成放在堆栈的可以回溯数据很多,而java的线程的stack都是有限的,当放的数据大于stack的大小时,就会抛出StackOverflow的异常。所以,正则公式改了一下,改为固化分组,当匹配了,就不会回溯了。下面改了下,测试没问题。有问题再改进下。
    public static void main(String[] args) throws IOException {
     Reader reader = new InputStreamReader(FilterJSComment.class.getResourceAsStream("/server.xml"),"utf-8");
            char buffer[] = new char[1000];
            int i=0;         StringBuilder sb = new StringBuilder();
            while((i=reader.read(buffer))!=-1){
                sb.append(buffer,0,i);
            }         reader.close();
            String str = sb.toString();
            System.out.println(str);
            
            String h = str.replaceAll("<!--(?>\\n\\r|\\r|\\n|.)*?-->", "");
            System.out.println(h); }
      

  14.   

    事实上没有那么简单,比如你的 HTML 中有一段这样的代码:var str = "注释的格式:<!-- 注释内容 -->";