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

求正则表达式??????????????????
去掉注释<!-- -->
我用str.replaceAll("<!--.*-->","");不行啊。。。。

------解决方案--------------------
的确有异常的情况。
第一次抛出异常,由于<!--太多,所以匹配的就很多,造成放在堆栈的可以回溯数据很多,而java的线程的stack都是有限的,当放的数据大于stack的大小时,就会抛出StackOverflow的异常。

所以,正则公式改了一下,改为固化分组,当匹配了,就不会回溯了。

下面改了下,测试没问题。有问题再改进下。

Java code

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

    }