zoukankan      html  css  js  c++  java
  • JAVA 中转义符的理解

      生物信息中有时候会遇到JAVA写的程序,今天阅读源码的时候发现对于正则中的转义符不好理解,后来查资料后终于弄明白了,这里详细说明一下:

      字符串的表示有三种方法:1、直接单字符,例如“A”;2、由转义字符表示的特殊字符,例如“ ”; 3、Unicode字符,例如“u0008”。其中转义字符表示的字符串,显示出来的就是这种模式,例如“ ”与“  ”是同一个字符串,“abc efg”与"abc  efg"是同一个字符串。

      但是单独的“”是不能出现在JAVA的字符串中作为字符串的,比如说如果要打印“abcefg”,这时会报错:“错误:非法转义符”。这是因为系统把“e“当做转义符,但是实际上并没有这个转义符。如果真的要将“”作为一个符号打印输出,那么就应该在""前面再加一个“”以表示后面的“”是要被输出,例如打印输出“abc\efg”,这时终端就会显示“abcefg”。

      同样的在正则表达式中,“u0041\\” 将匹配"A"。 乍一看有点晕,怎么有这么多反斜杠。前面已经讲过了,这时因为在JAVA中‘’单独出现会报错,所以此处的四个“\\”可以看成两个,而这两个“\”又可以看成是对一个“”的转义了(在正则表达式中)。例子如下: 打印输出“abc\efg”时会报错“错误:非法转义符”;打印输出“abc\\efg”时显示“abc\efg”;打印输出"abc\\efg"时同样的报错,而打印输出"abc\\\efg”则显示“abc\efg”。 

      总结一下,也就是说,如果在字符串中如果出现了多个“”连在一起,那么两个两个一起看。如果在正则表达式中出现了多个“”连在一起,那么要四个四个一起看,这四个一起是匹配一个“”字符,因为如果只有两个“”的话,那么实际上就是一个“”,它后面还要有例如‘t’,'d'这样的字符跟着才能表示转义,否则就会报错。

  • 相关阅读:
    反编译Silverlight项目
    Android 程序中像素(px)跟 单位dp(dip)之间的转换
    保存RichTextBox的文本到数据库,以及如何对RichTextBox的Document做绑定
    做事情要有五个w一个h,做项目也受用
    把RichTextBox的内容保存到数据库
    Android横竖屏切换总结
    64操作系统编译出错。The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.
    超过连接数时强行登陆3389(远程桌面)的方法
    Android 4.0新增WiFiDirect功能
    前缀和 与 树状数组
  • 原文地址:https://www.cnblogs.com/Demo1589/p/7092339.html
Copyright © 2011-2022 走看看