正则基础之 神奇的转义


在正则表达式中,转义字符(`\`)扮演着非常重要的角色。它允许我们将那些在正则表达式中具有特殊含义的字符当作普通字符来处理,或者赋予普通字符以特殊的含义。

### 神奇的转义

1. **转义特殊字符**:

正则表达式中的很多字符都有特殊的含义,比如`.`表示任意单个字符(除了换行符),`*`表示前面的元素可以出现零次或多次等。如果我们想匹配这些特殊字符本身,就需要使用`\`来转义它们。

egex
   \.    # 匹配点号(.)
   \\    # 匹配反斜杠(\)
   \*    # 匹配星号(*)
   

2. **指定字符集**:

虽然`\`主要用于转义,但在字符集中(方括号`[]`内),`\`也可以用来指定特殊的字符集,如`\d`表示任何数字,`\w`表示任何字母数字字符(等同于`[a-zA-Z0-9_]`),`\s`表示任何空白字符等。

egex
   \d+    # 匹配一个或多个数字
   \w+    # 匹配一个或多个字母数字字符
   \s+    # 匹配一个或多个空白字符
   

3. **控制字符的转义**:

在某些情况下,我们可能需要匹配那些无法直接在键盘上输入的字符,比如换行符`\n`、制表符`\t`等。这时,`\`也用来转义这些控制字符。

egex
   \n    # 匹配换行符
   \t    # 匹配制表符
   

4. **非打印字符的转义**:

除了控制字符外,`\`还可以用来表示一些非打印字符,如`\f`(换页符)、`\r`(回车符)等。

### 注意事项

- 在大多数编程语言中,字符串中的`\`本身也需要被转义,因此当你将正则表达式作为字符串字面量传递给函数或方法时,需要使用双反斜杠`\\`来表示一个反斜杠。


  import re
  pattern = re.compile(r"\\.")  # 匹配点号(.)
  

- 在正则表达式的原始字符串(以`r`或`R`前缀的字符串)中,`\`不需要被双重转义,因为原始字符串不对`\`进行特殊处理。


  import re
  pattern = re.compile(r"\.")  # 同样匹配点号(.)
  

以上就是正则表达式中神奇的转义的一些基本用法和注意事项。