首先,咱們須要知道在java字符串和正則表達式中,「\」都具備特殊的含義。java
(一)表明特殊字符:\t表明製表符,\n表明換行....等。正則表達式
(二)表明轉義,在字符串中,若是出現」 ‘ \,會形成代碼歧義,如:數組
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )spa
這時,就須要在形成歧義的字符前加\,來告訴編譯器:這個字符只是一個普通字符。blog
會形成歧義的有 \ ' "當咱們想讓他們表明普通字符的時候就須要變成\\ \' \"字符串
(一)表明特殊功能的字符:如\d表明數組編譯器
(二)表明轉義,和上面同樣,當出現字符歧義時,加上\表示普通字符。編譯
知道了原理,問題就好解釋了:class
由於" \ "號的在正則中被賦予了特殊含義,因此當咱們想在正則中匹配」\」時,須要加上轉義變成了「\\"。原理
在java字符串中,若是想表示兩個普通字符「\\」,一樣須要爲」\」加上轉義字符,變成了「\\\\」。
因此當咱們想在java中使用正則表達式匹配"\"時,就須要寫成"\\\\"