日期:2014-05-18 浏览次数:20986 次
aString.replaceAll("/\\*\\*.*?\\*\\*/","");
------解决方案--------------------
2楼漏了包含换行符的情况
参看jdk文档:「.」的说明:
. Any character (may or may not match line terminators)
public class regexSample {
public static void main(String[] args) {
// 被替换字符串中含有\n时
String aString = "select * from table \n" + "/** 这里有换行符:\n **/" + "where a=b";
// regex1解析 是对 regex1 的拆分,以括号来标记匹配思路.1比2多考虑了替换换行符的情况
// /表示/
// \\*表示*
// \\*表示*
// .表示换行符以外所有字符,\n表示换行符,|表示或关系,*表示出现0或0次以上
// \\*表示*
// \\*表示*
// /表示/
String regex1解析 = "/(\\*)(\\*)([color=#FF0000](.|\n)*[/color])(\\*)(\\*)/";
// regex2解析 是对 regex2 的拆分,以括号来标记匹配思路
// 个人认为这里的?没有啥作用。。。
String regex2解析 = "/(\\*)(\\*)([color=#FF0000]((.)*)?[/color])(\\*)(\\*)/";
// 和 regex1解析 等价
String regex1 = "/\\*\\*[color=#FF0000](.|\n)*[/color]\\*\\*/";
// 和 regex2解析 等价
String regex2 = "/\\*\\*[color=#FF0000].*?[/color]\\*\\*/";
System.out.println("result1 = " + aString.replaceAll(regex1, ""));
System.out.println("result2 = " + aString.replaceAll(regex2, ""));
}
}
------解决方案--------------------
javacode不能标颜色,重贴了一遍
String regex1解析 = "/(\\*)(\\*)((.|\n)*)(\\*)(\\*)/";
String regex2解析 = "/(\\*)(\\*)(((.)*)?)(\\*)(\\*)/";
String regex1 = "/\\*\\*(.|\n)*\\*\\*/";
String regex2 = "/\\*\\*.*?\\*\\*/";
public class regexSample {
public static void main(String[] args) {
// 被替换字符串中含有\n时
String aString = "select * from table " + "/** 这里有换行符:\n **/" +"/** 这里还有有换行符:\r\n **/"+ "where a=b";
// regex1解析 是对 regex1 的拆分,以括号来标记匹配思路.1比2多考虑了替换\n的情况
// /表示/
// \\*表示*
// \\*表示*
// ".表示换行符以外所有字符","|表示或关系,*表示出现0或0次以上","\n表示\n的换行符",
// "|表示或关系,*表示出现0或0次以上","\r\n表示\r\n的换行符"
// \\*表示*
// \\*表示*
// /表示/
String regex1解析 = "/(\\*)(\\*)((.|\n|\r\n)*)(\\*)(\\*)/";
// regex2解析 是对 regex2 的拆分,以括号来标记匹配思路
// 个人认为这里的?没有啥作用。。。
String regex2解析 = "/(\\*)(\\*)(((.)*)?)(\\*)(\\*)/";
// 和 regex1解析 等价
String regex1 = "/\\*\\*(.|\n|\r\n)*\\*\\*/";
// 和 regex2解析 等价
String regex2 = "/\\*\\*.*?\\*\\*/";
System.out.println("result1 = " + aString.replaceAll(regex1, ""));
System.out.println("result2 = " + aString.replaceAll(regex2, ""));
}
}
}
------解决方案--------------------
上面有的写错了~总之:
① 应该使用 aString.replaceAll("/\\*\\*(.|\n|\r\n)*\\*\\*/");
② 返回值是 String 。。。
------解决方案--------------------
------解决方案--------------------
帮顶下..其实这些都可以去网上搜搜的..我每次遇到JS里正则不会的地方就去网上查。..