一.前言

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

二.Java中的转义符

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

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

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

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

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

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

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

三.总结

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

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

  1. python中转义符的用法大全_Python中的各种转义符\n\r\t

    Python中属性和描述符的简单使用 Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和 ...

  2. Java正则表达式中的反向引用

    Java正则表达式中的反向引用是Java提供的另一个重要功能. 要了解反向引用 ,我们首先需要了解群组 . 正则表达式中的分组意味着将多个字符视为一个单元. 通过将要分组的字符放在一组括号" ...

  3. Java正则表达式中的捕获组的概念及相关API使用

    要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对"()"分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次 ...

  4. java pattern matches,Java正则表达式中的Pattern.matches()方法

    java.util.regex.Pattern.matches()方法匹配正则表达式和给定的输入.它有两个参数,即正则表达式和输入.如果正则表达式和输入匹配,则返回true,否则返回false. 给出 ...

  5. JAVA 中转义符的理解

    生物信息中有时候会遇到JAVA写的程序,今天阅读源码的时候发现对于正则中的转义符不好理解,后来查资料后终于弄明白了,这里详细说明一下: 字符串的表示有三种方法:1.直接单字符,例如"A&qu ...

  6. php 正则表达式 中括号 转义符能转换一个字符串吗,转义字符,正则表达式,特殊字符,模式匹配...

    1.常见的转义字符 字母前面加上反斜线 "\" 来表示常见的那些不能显示的ASCII字符.称为转义字符.如 \0, \t, \n 等. 转义字符 意义 ASCII码值(十进制) \ ...

  7. Java 正则表达式中为什么反斜杠“\“需要用“\\\\”表示

    正则表达式语法 在其他语言中,\\(两个斜杠) 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义. 在 Java 中,\\ (两个斜杠)表示:我要插入一个正则表达式 ...

  8. 七、Java编码字符集和转义符介绍

    @Author:Runsen @Date:2020/5/21 拼命复习,回顾之前写的,然后不断地修改博文,每一篇都有回忆 文章目录 字符集 编码 ASCII编码 转义符 代码 字符转化 打印转义符 字 ...

  9. Java 正则表达式 中的 任意字符

    原来正则表达式中的"."代表的是除换行以外的任意字符,如果要真正代表任意字符,需要把换行符也加进去,但是经过测试"[.\\n]"不生效,可以使用"\\ ...

最新文章

  1. java SpringWeb如何实现打印日志
  2. vs编译慢原因和解决方法
  3. mysql 导入创建表空间_说说在 Oracle11g 中如何创建表空间、创建用户并授权以及导入与导出数据...
  4. 20、【购物车模块】——更新、删除、查询购物车功能开发
  5. 将DataFrame数据如何写入到Hive表中
  6. JAVA中浅复制与深复制
  7. 吴恩达 深度学习 编程作业(2-3)- TensorFlow Tutorial
  8. 使用WM_QUIT终止线程
  9. win10下实现bat转exe
  10. 辩证唯物主义和历史唯物主义思维导图 - 圣才
  11. 兆比特每秒和兆字节每秒_bit ( 比特 )和 Byte(字节)的关系 以及 网速怎么算
  12. C语言中简单冒泡排序不花里胡哨
  13. Android 项目中依赖项目、依赖库、依赖module中的jar包(第三方库)
  14. 混沌数学之Chua's circuit(蔡氏电路)
  15. 商城小程序的一些功能介绍以及搭建教程
  16. 05-SA8155 QNX I2C框架及代码分析
  17. 报表生成(POI,jquery.table2excel.js,Echarts)
  18. 香港汇丰银行个人开户怎么办理?
  19. IT 基础设施趋势合集 | 多云、超融合、SDS、容器之趋势解读与政策分析
  20. Linux-包教包会系列之-shell

热门文章

  1. 用废纸壳做计算机模型,教你如何利用废纸壳几分钟DIY保险箱
  2. 微信小程序 云开发 生成带参小程序码 云函数网络请求(Node.js网络请求)
  3. Spring4 多种定时器详解
  4. java 三元运算符效率_Java笔记之三元运算符
  5. 验证邮箱的合法性(python学习)
  6. 苹果iPhone 7要来了 手里的旧6/6s怎么处理最划算
  7. 明星签名长啥样?古天乐王源字体笑翻 大张伟出乎意料
  8. 娜迦:大数据时代的来临 监管体系的创新
  9. 分享个最近在做的自动化测试框架
  10. Python + 基于工业的表面缺陷检测网络