re.sub() 替换时如何引用匹配到的分组内容( g 等)
技术百科
冷炫風刃
发布时间:2026-01-20
浏览: 次 在re.sub()中引用匹配分组需用反向引用:数字形式为\1、\2(需双反斜杠或原始字符串),命名组用\g;也可传入函数,通过Match对象的group()方法获取分组内容。
等)">
在 re.sub() 中引用匹配到的分组内容,主要靠反向引用语法:\\1、\\2 表示第 1、第 2 个捕获组,\\g 或 \\g 更清晰且支持命名组。
基础数字反向引用(\\1、\\2…)
括号 () 定义的捕获组按左括号出现顺序编号,替换字符串中用 \\1 引用第一个组,依此类推。注意:必须是双反斜杠(Python 字符串中表示一个字面反斜杠)。
-
re.sub(r'(\\d+)-(\\d+)', r'\\2/\\1', '2025-04')→'04/2025' - 如果写成
'\2/\1'(单反斜杠),会触发转义错误或意外行为(如\2被解释为 ASCII 字符)
命名组引用(\\g)
给分组起名后,用 \g 引用,更易读、不怕编号变化,也支持重复引用同一组。
-
re.sub(r'(?P→\\d{4})-(?P \\d{2})', r'\\g /\\g ', '2025-04') '04/2025' -
re.sub(r'(?P→\\w+)', r'【\\g 】', 'hello world') '【hello】 【world】'
在替换函数中获取分组(传入函数作 repl)
当逻辑复杂时,可传入函数作为 repl 参数,函数接收 Match 对象,用 .group(1)、.group('name') 等灵活处理。
def upper_first(m): return m.group(1).upper() + m.group(2)-
re.sub(r'(\\w)(\\w*)', upper_first, 'hello world')→'Hello World' - 函数中还能做条件判断、调用其他逻辑,比纯字符串替换更强大
常见陷阱与提醒
容易出错的地方:
- 忘记对反斜杠转义:写
'\1'是错的,必须写r'或
\1'
'\\1' - 引用了不存在的组:比如正则没写括号却用了
\\1,会报re.error: invalid group reference - 非捕获组
(?:...)不产生编号,不能被\\1引用 - 在 f-string 或格式化字符串中使用反向引用要格外小心,建议统一用 raw string(
r'')写替换模板
# 用了
# 第一个
# python
# 能做
# 不存在
# 也可
# Error
# 对象
# String
# 字符串
# ASCII
# 会报
# 依此类推
# 单反
# 更强大
# 主要靠
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11如何关闭小娜Cortana Win11禁
- Win11怎么设置任务栏图标大小_Windows1
- Windows音频驱动无声音原因解析_声卡驱动错误
- Python模块的__name__属性如何由导入方
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- Windows10怎样连接蓝牙设备_Windows
- 如何使用Golang捕获测试日志_Golang t
- Win10如何关闭安全中心所有通知 Win10禁用
- Mac如何与安卓手机传文件_Mac和Android
- C#如何使用XPathNavigator高效查询X
- Linux怎么查找死循环进程_Linux系统负载分
- Win11怎么关闭自动维护 Win11禁用系统自动
- Linux如何挂载新硬盘_Linux磁盘分区格式化
- 如何在 Go 中调用动态链接库(.so)中的函数
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- 如何在 Python 中将 ISO 8601 时间
- 如何使用Golang开发简单的聊天室消息存储_Go
- Win11怎么关闭自动修复_跳过Win11开机自动
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- Mac怎么安装软件_Mac安装dmg与pkg文件的
- Python路径拼接规范_跨平台处理说明【指导】
- Win10怎么设置开机密码_Windows10账户
- Python大文件处理策略_内存优化说明【指导】
- windows如何备份注册表_windows导出和
- Win11怎么打开注册表_Windows 11注册
- Win11如何设置文件关联 Win11修改特定文件
- Python大型项目拆分策略_模块化解析【教程】
- 如何在 Go 结构体中正确初始化 map 字段
- Win11怎么开启游戏模式_Windows11优化
- Windows 11登录时提示“用户配置文件服务登
- 如何使用 Python 合并文件夹内多个 Exce
- Win11怎么设置快速访问_Windows11文件
- php怎么下载安装后设置默认字符集_utf8配置步
- Win11怎么压缩文件 Win11自带压缩解压功能
- Win11怎么查看硬盘型号_Windows 11检
- Python网络日志追踪_请求定位解析【教程】
- Win10如何卸载自带Edge_Win10彻底卸载
- Win11怎么忘记WiFi网络_Win11删除已保
- 如何使用Golang实现基本类型比较_Golang
- 如何在 Go 中正确测试带 Cookie 的 HT
- php命令行怎么运行_通过CLI模式执行PHP脚本
- 如何使用Golang安装API文档生成工具_快速生
- Windows蓝屏BAD_POOL_HEADER故
- Win11如何设置自动关机 Win11定时关机命令
- Windows驱动无法加载错误解决方法_驱动签名验
- Windows10电脑怎么设置电源按钮_Win10
- Win11怎么设置任务栏大小_Windows11注
- Win11怎么设置按流量计费_Win11限制后台流
- Windows服务启动类型恢复方法_错误修改导致的
- Windows如何查看和管理已安装的字体?(字体文


QQ客服