正则表达式中的双重转义

    正则表达式中\和java中的\都表示转义,转义字符配合普通字符使用会使之拥有特殊含义,比如\d,\w,\n,\r ,那么问题来了,想打出 \ 应该怎么办?  应该用 \\ 

    应用正则表达式的场景-->

    例如: .  在正则表达式中表示通配符,System.out.println("hello".matches("^.ello$"));

    但是当我只想匹配 .ello 的时候正则表达式应该用 ^\\.ello$  ,

    1、首先明白,\n表示回车,\\n 表示字母n 的应用场景是在字符串中,也就是System.out.print("1122\n2233"),在字符串外\n是没有含义的。

    2、回到正题,从左向右,第二个 \ 是java字符串的,组成的 \. 是没有含义的,所以会报错 再加 个人认为会造成两种结果,一种是将第二个 \ 转义为单纯的反斜杠,即最终结果是反斜杠加通配符号 .    ;   另一种是将第二个 \  转义为正则表达式中的转义符,即最终结果是正则表达式  \.  。第二种结果优先。

    验证: 匹配6-12位的QQ号 --> System.out.println("16619965604".matches("^[1-9]\\d{5,11}$"))  ,

    上面中 \d 在字符串中是没有含义的,所以报错,要再加转义字符,最后得到正则表达式 \d

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容