Java正则注意

由于需要处理一些sql语句,用正则去掉一些不要的字符,非贪婪模式。
比如我想去掉注释

(^-- [\s\S]*?$)

在sublime text里面测试正则查找并替换,一切ok。我用python也试了,也没有问题。
将该正则用java来跑。死活不行,不能匹配到。

String regex = "^-- [\\s\\S]*?$";
str.replaceAll(regex, "");

最后再这儿发现了问题,原来要加上支持多行的flag
修改后的代码:

String regex = "^-- [\\s\\S]*?$";
Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
Matcher m = p.matcher(str);
if (m != null) {
    str = m.replaceAll("");
}

每种语言的正则或多或少都有一些差别,往往就是不太熟悉这些差别,就浪费时间各种折腾了。记录下来,希望能帮到您。

你可能感兴趣的:(其它,java)