引用java
說明:有正斜槓與反斜槓之分,正斜槓,通常就叫作斜槓,符號爲「/」;反斜槓的符號爲「\」正則表達式
引用express
斜槓(/)在JAVA中沒有什麼特別的意義,就是表明一個字符‘/’;
反斜槓(\)則否則,它和緊跟着它的那個字符構成轉義字符,如「\n」(表示換行)、「\」」(表示字符‘」’)等,因此在字符串中要表示字符'\'要用 「\\」來表示,例:若是你這樣定義一個字符串String s = 「name\sex」是錯誤的,要這樣定義String s = 「name\\sex」;
spa
引用.net
注意:在正則表達式中的「\\」表示和後面緊跟着的那個字符構成一個轉義字符(姑且先這樣命名),表明着 特殊的意義;因此若是你要在正則表達式中表示一個反斜槓\,應當寫成「\\\\」。若是你這樣得到一個Matcher,Matcher m = Pattern.compile(「\\」).matcher(「\\」)將會報錯,你應當這樣寫Matcher m = Pattern.compile(「\\\\」).matcher(「\\」)纔是正確且匹配的blog
引用字符串
接下來咱們來看一下String類中replace(CharSequence target,CharSequence replacement)方法與replaceAll(String regex, String replacement)方法的區別:
咱們先看一個例子:
get
publicstaticvoid main(String[] arg)throws OgnlException { io
String s ="sdf\\a\\aa"; 引用
//把s中的反斜槓\ 替換爲\\
System.out.println(s);
System.out.println(s.replaceAll("\\\\", "\\\\\\\\"));
System.out.println(s.replace("\\", "\\\\"));
}
[java] view plain copy print?
public static void main(String[] arg) throws OgnlException {
String s ="sdf\\a\\aa";
//把s中的反斜槓\ 替換爲\\
System.out.println(s);
System.out.println(s.replaceAll("\\\\", "\\\\\\\\"));
System.out.println(s.replace("\\", "\\\\"));
}
引用
能夠看出上面兩種都返回相同的替換結果。這 裏的關鍵是String.replaceAll()是用regular expression 來做爲參數的。可是java自己的字符串對於轉義符\也有相似的處理。首先,java會把「\\\\」解釋成一個字符串(其中包含兩個char)。接下 來,因爲replaceAll是以正則表達式做爲參數,因此「\\」被解釋成一個regex。對於一個regex來講這就表明着一個字符,就是「\」。對 後面的那個8個\來講,最終會被解釋成「\\」。換言之,假設String.replaceAll()是以普通字符串,而不是regex做爲參數,那麼這樣寫代碼: String target = source.replaceAll('\\', '\\\\'); 就能夠了。