一、這篇文章寫的很好,值得看看
兩個重點:
1、兩次轉義
(1)Java 轉義
(具體規則待學習)
Java 中的普通字符串,需要經過 Java 的轉義
(2)正則轉義
(具體規則待學習)
Java 代碼中,正則中的普通字符串,需要經過兩次轉義,一次 java 轉義,一次正則轉義
技巧:
在 Java 中寫正則時,可以先寫出目標表達式,即正常的正則語法,不考慮編程語言。然后,再考慮要生成一個這樣的目標表達式,需要經過怎樣的 Java 轉義,反推出最終的正則字符串(最終寫在代碼里的)應該怎么寫
2、內存中(比較時,是在內存中,而我們寫的代碼,在磁盤中)

二、這個問題和高贊答案也很不錯,值得反復揣摩
關於為什么 Pattern p = Pattern.compile("\\\n"); 這個會報 redundant character escape 警告,有點難理解,記錄一下自己現在的理解
\\\n 先按照 Java 轉義語法去轉義,前兩個 \\ 會轉義成一個 \,后兩個 \n 會轉義成一個換行符,所以正則收到的是一個 \ 加一個換行符,而前面那個 \ 是沒有意義的(注意,這時候正則收到的不是 \\n,因為 \n 已經被 Java 轉義成了換行符)
三、記憶一個典型例子
在 Java 中,要用正則匹配一個 \,需要 \\\\
四、推薦一個超級好用的在線正則網站
可以隨寫隨測
