去掉注释<!-- -->
我用str.replaceAll("<!--.*-->","");不行啊。
我用str.replaceAll("<!--.*-->","");不行啊。
解决方案 »
- 一个小问题,兄弟姐妹们帮帮忙吧
- 关于Spring事务管理的疑问,欢迎讨论,帮顶
- 有关liferay权限问题
- 请问一个多线程的问题
- 关于跳槽噢,欢迎各位朋友讨论
- JSF 问题 出现异常 java.lang.IllegalArgumentException
- MyEclipse工具问题
- org.apache.jasper.JasperException: java.lang.ClassCastException: org.apache.stru
- 请问JSF和Struts有什么区别
- ajax总是跳入error但是数据成功修改
- hibernate many-to-one问题
- SSH集成问题 2011-9-9 22:17:11 org.apache.catalina.core.StandardContext filterStart
+ 代表>=1个。肯定用+号,不用要*号
可以多行。。
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);
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);
}
优化下
str.replaceAll("(?s)<!--.*?-->","");
第一次抛出异常,由于<!--太多,所以匹配的就很多,造成放在堆栈的可以回溯数据很多,而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); }