由於需要處理一些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("");
}
每種語言的正則或多或少都有一些差別,往往就是不太熟悉這些差別,就浪費時間各種折騰了。記錄下來,希望能幫到您。