首页/开发/正则与编码速查/Python re 模块常用接口梳理

Python re 模块常用接口梳理

Python 标准库 re 的常用接口是 compile、search、match、fullmatch、findall、finditer、sub、subn、split、escape,模块级函数与预编译对象功能等价并共用缓存。预编译的价值在复用与集中管理,模式非法时在编译阶段抛 re.error。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​​​​‌‌‌‌​​‌​‌‌‌​‌​​​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​‌​​​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

Python re 模块常用接口

标准库 re 提供编译、搜索、整串匹配、替换与切分几类接口。模块级函数与预编译对象功能等价:直接调用 re.search 时内部会先编译并命中缓存,所以不必为「性能」强行预编译;预编译的价值主要在循环外复用与把模式集中管理。编译失败会抛 re.error,属于应该在启动阶段暴露的问题。

基本信息

顶层接口compile、search、match、fullmatch、findall、finditer、sub、subn、split、escape、purge
通用签名接口参数顺序为模式、待处理字符串、可选标志,sub 还有替换内容与次数
返回值findall 返回字符串或元组列表,finditer 返回匹配对象迭代器,其余返回匹配对象或改写后的字符串
异常模式非法时抛 re.error,错误信息里带位置与原因

典型使用场景

  • 文本清洗:批量去掉多余空白、控制字符与固定噪声片段
  • 日志解析:逐行用 finditer 或 search 抽取字段,处理大文件时避免一次性读入
  • 输入校验:用 fullmatch 判断整串是否符合规则,比加锚点更不容易遗漏
  • 模板替换:用 sub 做占位符替换,需要条件判断时传入回调函数
  • 分片处理:用 split 按分隔符切分,注意分隔符本身是否要保留

常用接口示例

常用接口示例
import re
pat = re.compile(r'(?P<key>\w+)=(?P<val>[^;]+)')     # 循环外编译一次即可复用
m = pat.search('size=10; color=red')               # 返回第一个匹配对象或 None
if m: print(m.group('key'), m.group('val'))        # 取值前先判空
for mm in pat.finditer(text): ...                  # 流式遍历,适合大文本
re.sub(r'\s+', ' ', text)                          # 归一化空白")
re.subn(r'\d+', '#', text)                         # 返回改写结果与替换次数
re.split(r'[,;]', line)                            # 按多个分隔符切分
re.escape(user_input)                              # 把字面量安全嵌进模式

接口与返回

接口作用返回类型
search扫描任意位置找第一个匹配匹配对象或 None
match从串首开始匹配匹配对象或 None
fullmatch要求整串匹配匹配对象或 None
findall返回全部匹配的内容列表
finditer逐个产出匹配对象迭代器
sub 与 subn替换匹配内容字符串,subn 额外返回次数
split按模式切分字符串列表
模式字符串建议一律使用原始字符串写法:普通字符串里反斜杠序列会被先行解释,形如数字转义的写法在较新版本会给出警告,且容易与预期不符,这一坑在跨文件复制模式时出现频率很高。
re.escape 用于把不可信或含特殊字符的字面量安全嵌入模式,是拼接用户输入的必备步骤;漏掉它会让输入中的元字符改变整条模式的语义。

易错点

  • 用普通字符串写模式:反斜杠被提前解释,转义序列含义改变,且新版本会给出语法警告
  • 在循环内重复编译模式:虽然命中缓存不至于很慢,但让编译错误只能在运行时暴露,启动期无法自检
  • 忘记判空:search 返回 None 时直接取组会抛异常,批量处理会中断在某一行
  • 用 match 当作整串校验:match 只要求从头开始,尾部多余内容不会被发现,应使用 fullmatch
  • 依赖标准库的字符属性写法:标准库不支持属性转义,模式会直接编译报错,需要手写区间或改用第三方库

数据来源与参考

  • Python 官方文档 re 模块:模块级函数与正则对象方法
  • Python 官方文档 re 模块:re.escape 与转义说明
  • Python 官方文档:正则表达式语法参考

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/python-re-module-basics.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​​​​‌‌‌‌​​‌​‌‌‌​‌​​​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​‌​​​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​