语⾔的转义字符及正则表达式的转义字符的表⽰
Java语⾔中的转义字符及正则语法中的转义字符在Java字符串中的表⽰。
ASCLL中的转义字符共有14个:
\o空字符(NULL)00H/0
\n换⾏符(LF)0AH/10
\r回车符(CR)0DH/13
\t⽔平制表符(HT)09H/9
\v垂直制表(VT)0B/11
\a响铃(BEL)07/7
\b退格符(BS)08H/8
\f换页符(FF)0CH/12
\’单引号27H/39
\”双引号22H/34
\\反斜杠5CH/92
\?问号字符3F/63
\ddd任意字符三位⼋进制字符串常量用转义字符表示
\xhh任意字符⼆位⼗六进制
在字符串或字符中只要出现反斜杠就连同其后的⼀或多个字符被认为是⼀个转义字符并尝试解析之,若不是合法的转义字符就会出错。在⼤多数语⾔中均如是,不过可能有些语⾔⾥不⽀持上述所有的转义字符。
语⾔对转义字符的处理:
在Java中⽀持的有11个: \0 \n \r \t \b \f \' \" \\ \ddd \xhh ,即在Java中与反斜杠搭配的只能有这11种情况,除此之外的都被认为是有误的。如 "\c" 或 '\c' 都会报错,即使我们本意不是想把前者中的 \c 当做转
义字符⽽是想表⽰ \ 和 c 这两个字符,但由于语⾔看到了斜杠就会按转义字符去解析,所以对于前后者都会因解析不成转义字符⽽报错。故若想表⽰这两个字符⽽不报错,就要加以处理以让语⾔不把它们当做转义字符解析,⽅法是对斜杠转义(让语⾔把斜杠当做普通字符⽽⾮转义字符的开始)——即 “\\c" 。
正则表达式的字符串表⽰:(在Java中⽤字符串表⽰正则表达式时很常出现上述情况)
在Java中没有什么特殊的语法能直接表⽰正则表达式,需要⽤字符串表⽰之(即在字符串⾥依次表⽰正则表达式⾥的每个字
符),JavaScript则好像可以直接表⽰?
在正则语法中有⼏个元字符( . $ | ( ) [ { ^ ? * + \ )有特殊含义(如 * 在正则表达式中表⽰匹配0或多个),根据正则语法若要将这些字符当做普通字符⽽⾮元字符来对待则需要加斜杠转义(如当我们想匹配该字符本⾝,则应该在模式定义中对之转义即 \* ),显然⽤字符串表⽰这些元字符的转义字符时(如 "\*")会因为解析不成ASCLL转义字符⽽报错,解决⽅法如上所述改为 "\\*" 。⼀个更极端的例⼦:在字符串中 \ 是元字符,为了在字符串中表⽰正则表达式的 \ 就需要两个斜杠即 \\ ;⽽正则表达式中 \ 也是元字符,为了要匹配  \ ⾃⾝,根据正则语法需转义为 \\ ,此时字符串表⽰就需要四个斜杠即 \\\\ 。
正则表达式中可能出现三种转义字符:预定义的⼀些正则表达式如表⽰数字的 \d 表⽰字符 \w 等、正则语法的元字符当普通字符对待时转义字符(特殊转普通)、ASCLL中的转义字符(普通转特殊)。
总结(正则表达式的字符串形式):根据正则语法定义正则表达式,然后将表达式转为字符串表⽰:⼀个简单的规则是正则表达式中的任何⼀个'\',在字符串中,需要替换为两个'\',(对于ASCLL转义字符反斜杠替不替换均可)。更简单的⽅式是在IDE(如Eclipse)中将定义好的正则表达式复制到String类型变量的值中,会⾃动添加 '\' 。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。