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

一.前言

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

二.Java中的转义符

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

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

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

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

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

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

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

三.总结

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

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值