首页/开发/正则与编码速查/Python 分组结果的读取方法

Python 分组结果的读取方法

Python 匹配对象通过 group、groups、groupdict、span、expand 读取分组结果:序号从 1 开始,0 是整段匹配,未参与的组返回空值而非空串。命名组同样占用序号,统一按名字取值可避免序号漂移带来的静默错误。

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

Python 分组结果的读取方法

匹配对象的取值接口围绕组展开:按序号取、按名字取、一次性取全部、取位置区间、按模板展开。最容易踩的坑是未参与匹配的组返回的是空值而不是空字符串,直接参与拼接或数值运算都会出问题。命名组在取值时仍占序号,插入新组会让序号整体漂移。

基本信息

按序号取group(1)、group(1, 2);序号从 1 开始,0 表示整段匹配
按名字取group('name')、groupdict(),后者返回名称到值的字典
位置区间start、end、span 可传组号或组名,返回字符下标
模板展开expand 接受替换模板,按组引用填充内容

典型使用场景

  • 结构化提取:一次匹配取多个字段,按名字读出后组装成记录
  • 替换回写:把匹配到的片段按模板重新组织,例如格式转换与掩码
  • 定位与高亮:用位置区间在原文上做标注或截取上下文
  • 数据校验:判断某个组是否参与,从而确认输入命中了哪个可选分支
  • 调试模式:打印 groups 与 groupdict 快速看清各组的实际取值

取值接口示例

取值接口示例
import re
m = re.search(r'(?P<x>a)?(?P<y>b)', 'b')
m.group('y')          # 'b':按名字取值
m.groups()            # (None, 'b'):未参与的组是 None,不是空串
m.groupdict()         # {'x': None, 'y': 'b'}
m.lastindex, m.lastgroup   # 最后参与匹配的组号与组名
m.span('y')           # (0, 1):该组在原文中的位置区间
re.search(r'(\d)-(\d)', '3-7').group(2)   # 按序号取第二组
re.search(r'(?P<n>\w+)', 'abc').expand(r'[\g<n>]')  # 按模板展开

接口与返回

接口返回内容说明
group()整段匹配等同组号 0
group(n, m)元组按给定组号或组名依次取值
groups()元组按序号列出全部捕获组
groupdict()字典只包含命名组
span(n)起止下标可用于切片与高亮
expand(tpl)字符串按模板展开,引用可写序号或组名
命名组同样占用序号:模式里出现一个命名组后,后续普通组的序号会顺延,混用序号与名字取值时最容易被这种偏移绊倒,取值统一用名字可以规避。
非捕获组不占序号也不出现在结果里,适合包住可选片段与量词作用范围;不确定是否需要该分组时优先写非捕获形式,能显著减少取值代码里的判空分支。

易错点

  • 把未参与组的空值当空字符串:拼接与类型转换会失败,或产生字面量字符串混进数据
  • 组号从 0 开始数:0 是整段匹配,第一个括号从 1 开始,取错位置会拿到意料之外的片段
  • 混用序号与名字:命名组占用序号后整体顺延,序号引用静默指向另一个组
  • 忘记可选组可能未参与:只判空值类型不做默认值填充,下游需要到处补判空逻辑
  • 在替换模板里使用未参与组的引用:展开结果与预期不符,需要先确认组是否参与匹配

数据来源与参考

  • Python 官方文档 re 模块:匹配对象方法与属性
  • Python 官方文档 re 模块:命名分组与非捕获组
  • Python 官方文档:替换模板中的组引用语法

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

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