java正则表达式转义字符

时间:2013-05-30 00:18:01

标签: java regex

嗨我正在尝试拆分由竖条分隔的字符串。例如:

String str = "a=1|b=2";

在java中,我们应该这样做:

 str.split("\\|");

如果我使用单斜杠:

str.split("\|");

编译器会出错:

  

无效的转义序列(有效转义序列为\ b \ t \ n \ f \ r \“\ \ \ \)

任何人都可以解释为什么会这样吗?谢谢!

2 个答案:

答案 0 :(得分:4)

反斜杠\是一个特殊字符。在Java世界中,它用于转义角色。

管道|是Regex世界中的一个特殊字符,意思是“ OR ”。

要将管道用作分隔符,您需要将其转义(因此在正则表达式解析期间可以识别它),因此您需要在正则表达式中获取此值:\|

但是由于反斜杠是Java中的一个特殊字符并且您正在使用String对象,因此必须转义反斜杠,以便将其解释为最终预期的最终结果:\|

为此,您只需使用另一个反斜杠转义反斜杠:\\|

第一个反斜杠转义了第二个反斜杠(java要求),它逃脱了管道(正则表达式要求)。

答案 1 :(得分:1)

在Java字符串中,需要使用另一个反斜杠转义反斜杠。因此,虽然正则表达式的“规范”形式确实是\|,但作为Java字符串,必须写成"\\|"