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("");
}

每種語言的正則或多或少都有一些差別,往往就是不太熟悉這些差別,就浪費時間各種折騰了。記錄下來,希望能幫到您。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章