Python 正则表达式基础语法及 re 模块常用函数(match、search、compile、sub)
Python 爬虫与正则表达式
正则表达式基础
正则表达式 – 语法 | 菜鸟教程
常用字符说明
| 字符 | 描述 |
|---|
[ABC] | 匹配字符串中所有的 A、B、C 字母 |
[^ABC] | 匹配字符串中所有的非 A、B、C 字母 |
[A-Z] | 表示一个区间,匹配所有大写字母;[a-z] 表示所有小写字母 |
. | 匹配除换行符(\n、\r)之外的任何单个字符,等价于 [^\n\r] |
\s | 匹配任何空白字符(空格、制表符、换页符等);\S 匹配任何非空白字符 |
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结尾位置 |
? | 匹配前面的子表达式零次或一次,或指明非贪婪限定符 |
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次 |
{n,m} | m 和 n 均为非负整数,且 n ≤ m。最少匹配 n 次,最多匹配 m 次。例如 "o{1,3}" 将匹配 "fooooood" 中的前三个 o。"o{0,1}" 等价于 "o?"。注意逗号和两数之间不能有空格 |
( ) | 标记一个子表达式的开始和结束位置,子表达式可以获取供以后使用(如 (?P<函数名>匹配正则)) |
| 贪婪与非贪婪模式 | 在正则表达式中,*、+、? 默认是贪婪的,会尽可能多地匹配内容。例如 "<.*>" 中的 * 会匹配到字符串最后的 >。若要使用非贪婪模式,在限定符后加 ?,如 "<.*?>" |
Python 正则表达式
Python 正则表达式 | 菜鸟教程
常用函数
1
2
3
4
5
6
| import re
re.match(pattern, string, flags=0)
re.search(pattern, string, flags=0)
# 匹配成功时返回一个匹配对象,否则返回 None。
# 可以使用 group(num) 或 groups() 获取匹配表达式。
|
re.match 与 re.search 的区别:
re.match 只匹配字符串的开始位置,如果开始位置不符合正则表达式,则匹配失败返回 None;而 re.search 匹配整个字符串,直到找到第一个匹配。
参数说明
| 参数 | 描述 |
|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串 |
flags | 标志位,用于控制匹配方式(如是否区分大小写、多行匹配等) |
flags 修饰符
| 修饰符 | 描述 |
|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行符在内的所有字符 |
re.U | 根据 Unicode 字符集解析字符,影响 \w、\W、\b、\B |
re.X | 允许更灵活的格式,使正则表达式更易于理解 |
re.compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 使用。
1
| re.compile(pattern[, flags])
|
pattern:字符串形式的正则表达式flags:可选,匹配模式(如忽略大小写、多行模式等)
re.sub 函数
1
| re.sub(pattern, repl, string, count=0, flags=0)
|
pattern:正则中的模式字符串repl:替换的字符串,也可为一个函数string:要被查找替换的原始字符串count:模式匹配后替换的最大次数,默认 0 表示替换所有匹配