若出現:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )這樣的問題,一般是轉義字符的問題,下面是收集的網上解釋:
根據Java Language Specification 的要求,Java 源代碼的字符串中的反斜線被解釋為Unicode 轉義或其他字符轉義。因此必須在字符串字面值中使用兩個反斜線,表示正則表達式受到保護,不被 Java 字節碼編譯器解釋。例如,當解釋為正則表達式時(很明顯String.replaceAll("","")第一個參數就會被解釋為正則表達式),字符串字面值 "\b" 與單個退格字符匹配,而 "" 與單詞邊界匹配。字符串字面值 "\(hello\)"是非法的,將導致編譯時錯誤;要與字符串 (hello) 匹配,必須使用字符串字面值 ")"。
下面為正則匹配的例子:
js中:[\w.]+@[\w.]+\.\w+
java中:[\\w.]+@[\\w.]+\\.\\w+
凡是\都換成\\
更詳細的轉義字符說明,參考:http://www.cnblogs.com/EasonJim/p/6561576.html
還有一種說法,這種錯誤也經常出現在路徑字符傳中,在windows下路徑使用的是反斜杠,而且是兩個,所以windows路徑的分隔符為“\\\\”,而通常我們的寫法最多就是“\\”。