Python学习笔模式匹配与正则表达式之用sub()方法替换字符串
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
正则表达式不仅能找到文本模式,而且能够用新的文本替换掉这些模式。Regex对象的 sub()方法需要传入两个参数。
第一个参数是一个字符串,用于取代发现的匹配。第二个参数是一个字符串,即正则表达式。sub()方法返回替换完成后的
字符串。
#------------------------------------------------我是可耻的分割线-------------------------------------------
示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re namesRegex = re. compile (r 'Agent \w+' ) #定义正则表达式 #第一个参数是想要被替换为的内容,第二个参数是检查的文本 print (namesRegex.sub( 'CENSORED' , 'Agent Alice gave the secret documents to Agent Bob.' )) |
运行结果:
有时候,你需要使用匹配的文本本身,作为替换的一部分。在sub()的第一个参数中,可以输入\1、\2、\3.....。表示“在替换中输入分组1、2、3.....”的文本。
假如,假定想要隐去密探的姓名,只显示他们的姓名的第一个字母。要做到这一点,可以使用正则表达式Agent (\w)\w*,传入 r'\1****'作为 sub()的第一个参数。
字符串中的\1 将由分组 1 匹配的文本所替代,也就是正则表达式的(\w)分组。
示例代码:
1 2 3 4 5 6 7 8 9 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #定义表示为Agent+空格,后面的所有字符串,一致到空格、换行、制表符为止,为分组1的内容的正则表达式 agentNamesRegex = re. compile (r 'Agent (\w)\w*' ) #sub()第一个参数为要替换的内容1表示为正则表达式的分组1 mo = agentNamesRegex.sub(r '\1****' , 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.' ) print (mo) |
运行结果:
分类:
Python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异