正则表达式学习
正则表达式学习
Python re模块

re常量
常量即表示不可更改的变量,一般用于做标记。
IGNORECASE
- 语法: re.IGNORECASE 或简写为 re.I
 - 作用: 进行忽略大小写匹配。
 
ASCII
- 语法: re.ASCII 或简写为 re.A
 - 作用: 顾名思义,ASCII表示ASCII码的意思,让 
\w,\W,\b,\B,\d,\D,\s和\S只匹配ASCII,而不是Unicode。 
DOTALL
- 语法: re.DOTALL 或简写为 re.S
 - 作用: DOT表示
.,ALL表示所有,连起来就是.匹配所有,包括换行符\n。默认模式下.是不能匹配行符\n的。 
MULTILINE
语法: re.MULTILINE 或简写为 re.M
作用: 多行模式,当某字符串中有换行符
\n,默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。正则表达式中
^表示匹配行的开头,默认模式下它只能匹配字符串的开头;而在多行模式下,它还可以匹配 换行符\n后面的字符。注意:正则语法中
^匹配行开头、\A匹配字符串开头,单行模式下它两效果一致,多行模式下\A不能识别\n。
VERBOSE
- 语法: re.VERBOSE 或简写为 re.X
 - 作用: 详细模式,可以在正则表达式中加注解!
 
LOCALE(不常用)
- 语法: re.LOCALE 或简写为 re.L
 - 作用: 由当前语言区域决定 
\w,\W,\b,\B和大小写敏感匹配,这个标记只能对byte样式有效。这个标记官方已经不推荐使用,因为语言区域机制很不可靠,它一次只能处理一个 “习惯”,而且只对8位字节有效。 
UNICODE
- 语法: re.UNICODE 或简写为 re.U
 - 作用: 与 ASCII 模式类似,匹配unicode编码支持的字符,但是 Python 3 默认字符串已经是Unicode,所以有点冗余。
 
DEBUG
- 语法: re.DEBUG
 - 作用: 显示编译时的debug信息。
 
TEMPLATE
- 语法: re.TEMPLATE 或简写为 re.T
 - 作用:源码注释中写着:disable backtracking(禁用回溯)
 
re函数
查找匹配项
- search:查找任意位置的匹配项
 - match:必须从字符串开头匹配
 - fullmatch:整个字符串与正则匹配
 
查找多个匹配项
- findall:从字符串任意位置查找,返回一个列表
 - finditer:从字符串任意位置查找,返回一个迭代器
 
分割
- re.split(pattern, string, maxsplit=0, flags=0) 函数:用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,既re常量
 
替换
- re.sub(pattern, repl, string, count=0, flags=0) 函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量。
 - re.subn(pattern, repl, string, count=0, flags=0) 函数与 re.sub函数 功能一致,只不过返回一个元组 (字符串, 替换次数)。
 
编译正则对象
以下将正则表达式的样式编译为一个 正则表达式对象
compile函数template函数
其他
- **re.escape(pattern)**:可以转义正则表达式中具有特殊含义的字符,比如:
.或者* - re.purge() :清除 正则表达式缓存
 
参考链接
Python正则表达式,这一篇就够了! - 知乎 (zhihu.com)
匹配模式
多种匹配模式
| 实例 | 描述 | 
|---|---|
[Pp]ython | 
匹配 “Python” 或 “python”。 | 
rub[ye] | 
匹配 “ruby” 或 “rube”。 | 
[abcdef] | 
匹配中括号内的任意一个字母。 | 
[0-9] | 
匹配任何数字。类似于 [0123456789]。 | 
[a-z] | 
匹配任何小写字母。 | 
[A-Z] | 
匹配任何大写字母。 | 
[a-zA-Z0-9] | 
匹配任何字母及数字。 | 
[^au] | 
除了au字母以外的所有字符。 | 
[^0-9] | 
匹配除了数字外的字符。 | 
| 实例 | 描述 | 
|---|---|
. | 
匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。 | 
? | 
匹配一个字符零次或一次,另一个作用是非贪婪模式 | 
+ | 
匹配1次或多次 | 
* | 
匹配0次或多次 | 
\b | 
匹配一个长度为0的子串 | 
\d | 
匹配一个数字字符。等价于 [0-9]。 | 
\D | 
匹配一个非数字字符。等价于 [^0-9]。 | 
\s | 
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 | 
\S | 
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 | 
\w | 
匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 | 
\W | 
匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。 | 
\b | 
匹配一个长度为0的子串 | 

