日期:2014-05-18 浏览次数:20790 次
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里正则不会的地方就去网上查。..