当前情况没有差别。通常的字符串转义序列与单个反斜线的帮助下,然后一个有效的转义字符("\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正则表达式中转义空白字符。即使他们用于角色类。 –