Python 爬虫与正则表达式

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.matchre.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 表示替换所有匹配