Java正則中爲何反斜線"\"須要用「\\\\」表示,緣由詳解。

首先,咱們須要知道在java字符串和正則表達式中,「\」都具備特殊的含義。java

1、Java的字符串中"\"有兩個功能

  (一)表明特殊字符:\t表明製表符,\n表明換行....等。正則表達式

  (二)表明轉義,在字符串中,若是出現」 ‘ \,會形成代碼歧義,如:數組

   

  Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )spa

  這時,就須要在形成歧義的字符前加\,來告訴編譯器:這個字符只是一個普通字符。blog

   

  會形成歧義的有 \    '    "當咱們想讓他們表明普通字符的時候就須要變成\\    \'   \"字符串

 

2、在正則中\一樣被賦予了兩個功能

  (一)表明特殊功能的字符:如\d表明數組編譯器

  (二)表明轉義,和上面同樣,當出現字符歧義時,加上\表示普通字符。編譯

3、總結

  知道了原理,問題就好解釋了:class

  由於" \ "號的在正則中被賦予了特殊含義,因此當咱們想在正則中匹配」\」時,須要加上轉義變成了\\"原理

  在java字符串中,若是想表示兩個普通字符\\」,一樣須要爲」\」加上轉義字符,變成了\\\\」。

  因此當咱們想在java中使用正則表達式匹配"\"時,就須要寫成"\\\\"

相關文章
相關標籤/搜索