首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java 正则表达式的应用场景,用法,返回结果等。有经验的都请留下一二。解决思路

2012-01-05 
java 正则表达式的应用场景,用法,返回结果等。有经验的都请留下一二。比如我要过滤sql文件中 /** ... **/ 这

java 正则表达式的应用场景,用法,返回结果等。有经验的都请留下一二。

比如我要过滤sql文件中 /** ... **/ 这样的语句,

如何做到。

正则表达式返回的结果是什么类型,

如何应用,

请提供有价值的参考。


[解决办法]

Java code
aString.replaceAll("/\\*\\*.*?\\*\\*/","");
[解决办法]
2楼漏了包含换行符的情况
参看jdk文档:「.」的说明:
. Any character (may or may not match line terminators)
Java code
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 = "/\\*\\*.*?\\*\\*/";
Java code
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里正则不会的地方就去网上查。..

热点排行