关于Java正则表达式中转义符“\\”的使用

一.前言

在复习到正则表达式这一部分的内容时,我注意到Java中要想使用转义符必须要用双反斜杠来达到其他语言中单反斜杠的效果,出于对这个问题的好奇我查阅了一些资料,并初步了解了Java正则表达式中转义符的相关机制,我将在接下来的文章中简要介绍。

二.Java中的转义符

首先我们可以发现,在Java的字符串中如果出现奇数个反斜杠,会导致无法通过静态检查

而要使用转义的话我们必须用双反斜杠

关于Java正则表达式中转义符“\\”的使用_第1张图片

由上图可见这两种情况中,双反斜杠都起到了其他语言中单反斜杠的作用,由此我们可以初步猜测在Java中双反斜杠等价于其他语言中单反斜杠

经过查阅相关资料,我们可以知道在Java中\\表示插入一个正则表达式中的反斜杠,也就是对其后面的字符进行转义。

但对于制表符 \t ,换行符 \n 等具有特殊意义的字符组合中,单反斜杠的存在是合法的。而且我们还可以发现一个有趣的事情,在Java正则表达式中 \t 和 \\t 都可以成功匹配制表符,二者在使用中并没有差异。

关于Java正则表达式中转义符“\\”的使用_第2张图片

另外,理论上来讲"\\"这个正则表达式在Java中是用来匹配单反斜杠的,但由于单反斜杠在Java中不合法(\n,\t等有特殊意义的字符除外),所以当我们试图用这个正则表达式来匹配的时候编译器会抛出一个错误

关于Java正则表达式中转义符“\\”的使用_第3张图片

同理,当我们试图用2的偶数倍个连续的反斜杠进行匹配时也会抛出同样的错误

三.总结

在Java正则表达式中想要使用转义符的时候,我们可以先写出一个通用正则表达式,再将其中的所有单反斜杠替换成双反斜杠。同时也要考虑一些特殊情况可能引起的错误。

你可能感兴趣的:(正则表达式,java)