反斜线有多种用法。首先,如果紧接着是一个非字母数字字符,表明取消 该字符所代表的特殊涵义。这种将反斜线作为转义字符的用法在字符类 内部和外部都可用。
比如,如果你希望匹配一个 "*" 字符,就需要在模式中写为 "*"。 这适用于一个字符在不进行转义会有特殊含义的情况下。 但是, 对于非数字字母的字符,总是在需要其进行原文匹配的时候在它前面增加一个反斜线, 来声明它代表自己,这是安全的。如果要匹配一个反斜线,那么在模式中使用 ”\”。
Note:
反斜线在单引号字符串和双引号字符串 中都有特殊含义,因此要匹配一个反斜线, 模式中必须写为 ”\\”。 译注: “/\/”, 首先它作为字符串,反斜线会进行转义, 那么转义后的结果是//,这个才是正则表达式引擎拿到的模式, 而正则表达式引擎也认为 是转义标记,它会将分隔符 / 进行转义, 从而得到的是一个错误,因此,需要 4 个反斜线才可以匹配一个反斜线。
如果一个模式被使用 PCRE_EXTENDED 选项编译, 模式中的空白字符(除了字符类中的)和未转义的#到行末的所有字符都会被忽略。 要在这种情况下使用空白字符或者#,就需要对其进行转义。
反斜线的第二种用途提供了一种对非打印字符进行可见编码的控制手段。 除了二进制的 0 会终结一个模式外,并不会严格的限制非打印字符(自身)的出现, 但是当一个模式以文本编辑器的方式编辑准备的时候, 使用下面的转义序列相比使用二进制字符会更加容易。
- a
- 响铃字符(十六进制 07)
- cx
- "control-x",x 是任意字符
- e
- 转义 (十六进制 1B)
- f
- 换页 (十六进制 0C)
- 换行 (十六进制 0A)
- p{xx}
- 一个符合 xx 属性的字符,详细查看unicode properties 属性
- P{xx}
- 一个不符合xx属性的字符,详细查看unicode properties 属性
- 回车 (十六进制 0D)
- 水平制表符 (十六进制 09)
- xhh
- hh十六进制编码的字符,详细查看unicode properties 属性
- ddd
- ddd八进制编码的字符,或者后向引用
cx的确切效果如下: 如果x是一个小写字母,它被转换为大写。接着, 将字符的第6位(十六进制 40,右数第一个位为第0位)取反。 比如cz成为十六进制的1A,c{成为十六进制3B, c;成为十六进制7B。
在”x”后面,读取两个十六进制数(字母可以是大写或小写)。 在UTF-8模式, “x{…}”允许使用, 花括号内的内容是十六进制有效数字。 它将给出的十六进制数字解释为 UTF-8 字符代码。原来的十六进制转义序列, xhh, 匹配一个双字节的UTF-8字符,如果它的值大于127
在”