嗨我正在尝试拆分由竖条分隔的字符串。例如:
String str = "a=1|b=2";
在java中,我们应该这样做:
str.split("\\|");
如果我使用单斜杠:
str.split("\|");
编译器会出错:
无效的转义序列(有效转义序列为\ b \ t \ n \ f \ r \“\ \ \ \)
任何人都可以解释为什么会这样吗?谢谢!
答案 0 :(得分:4)
反斜杠\
是一个特殊字符。在Java世界中,它用于转义角色。
管道|
是Regex世界中的一个特殊字符,意思是“ OR ”。
要将管道用作分隔符,您需要将其转义(因此在正则表达式解析期间可以识别它),因此您需要在正则表达式中获取此值:\|
。
但是由于反斜杠是Java中的一个特殊字符并且您正在使用String对象,因此必须转义反斜杠,以便将其解释为最终预期的最终结果:\|
为此,您只需使用另一个反斜杠转义反斜杠:\\|
第一个反斜杠转义了第二个反斜杠(java要求),它逃脱了管道(正则表达式要求)。
答案 1 :(得分:1)
在Java字符串中,需要使用另一个反斜杠转义反斜杠。因此,虽然正则表达式的“规范”形式确实是\|
,但作为Java字符串,必须写成"\\|"
。