java 正则表达式的应用场景,用法,返回结果等。有经验的都请留下一二。
比如我要过滤sql文件中 /** ... **/ 这样的语句,
如何做到。
正则表达式返回的结果是什么类型,
如何应用,
请提供有价值的参考。
[解决办法]
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里正则不会的地方就去网上查。..