當前情況沒有差別。通常的字符串轉義序列與單個反斜線的幫助下,然後一個有效的轉義字符("\n"
,"\r"
等)和正則表達式轉義序列形成有字面反斜線的幫助(形成即Java字符串文字中的雙反斜線)和有效的正則表達式轉義字符("\\n"
,"\\d"
等)。
"\n"
(一個轉義序列)是文字LF(換行)和"\\n"
是匹配的LF符號一個正則表達式的轉義序列。
"\r"
(一個轉義序列)是文字CR(回車)和"\\r"
是匹配的CR符號一個正則表達式的轉義序列。
看到Java regex docs名單正則表達式逃逸的支持列表。
但是,如果您使用的是Pattern.COMMENTS
flag(用於引入的意見和很好格式的模式,使得正則表達式引擎忽略模式的所有轉義空格),你要麼需要使用"\\n"
或"\\\n"
定義一個換行符(LF )在Java字符串文字中,並且"\\r"
或"\\\r"
定義回車(CR)。
看到一個Java test:
String s = "\n";
System.out.println(s.replaceAll("\n", "LF")); // => LF
System.out.println(s.replaceAll("\\n", "LF")); // => LF
System.out.println(s.replaceAll("(?x)\\n", "LF")); // => LF
System.out.println(s.replaceAll("(?x)\\\n", "LF")); // => LF
System.out.println(s.replaceAll("(?x)\n", "<LF>"));
// => <LF>
//<LF>
爲什麼是最後一個生產<LF>
+換行+ <LF>
?因爲"(?x)\n"
等於""
,它是一個空的模式,它匹配換行符之前和之後的空白空間。
沒有區別。 '\\ n'匹配一個LF,'\ n'匹配一個LF。 –
如果您使用COMMENTS模式,應該有所不同。 –
@SebastianProske那是真的。我的意思是,鑑於目前的正則表達式,沒有區別。如果使用'(?x)',那麼應該在Java正則表達式中轉義空白字符。即使他們用於角色類。 –