1. 特殊字符在使用时如果体现的是字面意义,需要在其前面加上一个反斜线( \ ),特殊字符包括 \ . ^ $ ? + * { } ( ) [ ] |
2. 如果需哟匹配某个字符集中的任意一个,可以使用字符类来实现——包含在方括号中的一个或多个字符。字符类是一个表达式,例如regex r[ea]d可以匹配red和radar(下划线表示匹配的部分)。
3. 在一个字符类内部,除\之外,特殊字符不再具备其特殊意义,例外的有
- 如果^符号是字符类的第一个字符,就是用其特殊含义(否定),但在其他情况下,仍然只是一个字面意义的^符号
- 如果-表示一个字符范围,如果作为字符类的第一个字符,就表示一个字面意义的连字符
4. 字符类速记:
- .(小数点) : 可以匹配除换行符之外的任意字符,或带re.DOTALL标记的任意字符,或匹配字符类内部的字面意义的字符
- \d : 匹配一个Unicode数字,或带re.ASCII标记的[0-9]
- \D : 匹配一个Unicode非数字,或带re.ASCII标记的[^0-9]
- \s : 匹配一个Unicode空白,或带re.ASCII标记的[ \t\n\r\f\v]
- \S : 匹配一个Unicode非空白,或带re.ASCII标记的[^ \t\n\r\f\v]
- \w : 匹配一个Unicode单词字符,或带re.ASCII标记的[a-zA-Z0-9_]
- \w : 匹配一个Unicode非单词字符,或带re.ASCII标记的[^a-zA-Z0-9_]