今天在问答区上看到一则有意思的问题,直接把截图搬过来,如下: (外链网址已屏蔽)

看起来明显输入的正则表达式不同,但是输出结果都一样(制表符被替换)。随后去查了下Pattern的Doc,发现下面一段话:

It is an error to use a backslash prior to any alphabetic character that does not denote an escaped construct; these are reserved for future extensions to the regular-expression language. A backslash may be used prior to a non-alphabetic character regardless of whether that character is part of an unescaped construct.

其大意是,一个反斜线可以放在任何一个non-alphabetic字符之前而无论这个字符是否是一个可以escaped的字符。(经过测试发现,如果反斜线后面跟着一个non-alphabetic字符的时候是不起任何作用的,跟不加反斜线的效果一样)

那么回头来看这个问题,由于\在java是escape character,所以出现有\的地方我们先做一个转换如下,左边是原始输入,右边是转义以后的字符串数组(数组的形式更方便区分):

\t -> {\t}

\ \t -> {\,t}

\ \ \t -> {\, \t}

\ \ \ \t -> {\, \, t}

第一个就是制表符,那么被替换掉可以理解。

第二个转义以后虽然不是制表符,但是从字面上看来也是制表符,所以正则替换的时候也被替换掉了。

第三个转义以后是一个\和一个制表符,根据前面看到的JavaDoc提到的内容。制表符是一个non-alphabetic字符,所以这个用法其实就是表示一个制表符(你也可以把 \t 换成 \你 看看输出结果)。

第四个转义以后是\,\和t三个字符,那么明显是不满足替换条件。

java斜线_Java中的 \ (反斜线)和正则表达式相关推荐

  1. java获取系统斜线_java从含反斜线路径截取文件名

    例如:获取到的文件路径为C:/Documents and Settings/Leeo/My Documents/logo.gif      现在想要取得图片的名称logo.gif,我们知道反斜杠&qu ...

  2. java 枚举_Java中的枚举类型(Enum)详解

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

  3. math java 计算_Java中的数学计算函数汇总

    Math类:  java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(B ...

  4. java 事务_Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  5. [转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

  6. java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法

    1.使用规则: (1)& 可以用作逻辑与的运算符,表示逻辑与(and) a.当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false ...

  7. java 包装类_Java中的包装类

    Java中哪些需要包装类 它们将原始数据类型转换为对象.如果我们希望修改传递给方法的参数,则需要对象(因为基元类型是按值传递的). java.util包中的类只处理对象,因此在这种情况下包装类也有帮助 ...

  8. java 难度_java中难度大一点的面试题

    1.请大概描述一下Vector和ArrayList的区别,Hashtable和HashMap的区别.(5) (1)Vector和ArrayList的异同 实现原理,功能相同,可以互用 主要区别: Ve ...

  9. java中的多态性_[转载] c++多态与java多态性_Java中的多态性

    参考链接: Java中的加法和串联 c++多态与java多态性 Polymorphism is one of the core concepts of OOPS paradigm. The meani ...

最新文章

  1. 开学综合症有救了!17篇最新AI论文不容错过
  2. java代码复数包括虚部和实部,Java中编写Applet程序验证复数类(在问题补充中)实现接收用户输入的复数的实部和虚部,计算复数与复数,复数与实数的加减,乘除操作...
  3. 地址随机化 linux,GOT覆盖和Linux地址随机化
  4. Python下载prettyloaded的swf
  5. 无法更新 TeamViewer 服务属性是什么意思?
  6. 缺陷分析之缺陷预防的过程
  7. 【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现
  8. f和摄氏度怎么换算_华氏度和摄氏度的换算
  9. 基于数据挖掘技术的客户保有应用研究
  10. linux内核打补丁步骤
  11. 虚拟专用网络隧道实验
  12. 七牛云这个API,让我轻松搞定Banner背景自动切换的功能
  13. C语言和R语言变量命名规则的比较
  14. led和白炽灯哪个对眼睛好?分享光线舒适的LED护眼灯
  15. HTML5+CSS3小实例:后台管理系统的侧边导航栏
  16. 如何获取sha1值和MD5值
  17. 整理的开学需要准备的物品清单,删了怪可惜,做个备份吧
  18. 圆为什么规定一定是360度_为什么圆是360度
  19. APIcoud 手机二维码or条码 生成与扫描模块
  20. C++STL详解(六)unordered_setunordered_map介绍

热门文章

  1. Gps测量两点之间的距离
  2. 小学生计算机教室注意事项,小学生安全注意事项
  3. IT人转型的终极目标
  4. 毕业6年,我和同学的差距是这样拉开的
  5. 2.1 zio入门——把函数作用作为工作蓝图
  6. Windows To Go常见问题
  7. 有关学术界的治理-来自学术道德通论课程作业
  8. 基于FIR的音乐加噪降噪及频谱分析
  9. 前端速成:双月Java之旅(week5)_day1
  10. python学习__tsv文件写入多余空行问题