Python学习笔记模式匹配与正则表达式之用正则表达式匹配更多模式
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
既然你已知道用 Python 创建和查找正则表达式对象的基本步骤,就可以尝试一些更强大的模式匹配功能了。
#------------------------------------------------我是可耻的分割线-------------------------------------------
1、利用括号分组,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #用 import re 导入正则表达式模块。 phoneNumregex = re. compile (r '(\d{3})-(\d{3}-\d{4})' ) #使用括号进行分组。 text = phoneNumregex.search( 'My number is 415-555-4242' ) #向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。 print (text.group( 1 )) #调用 Match 对象的 group()方法,返回分组1的内容。 |
运行结果:
2、用管道匹配多个分组,示例代码:
字符|称为“管道”。希望匹配许多表达式中的一个时,就可以使用它。例如,正则表达式 r'Batman|Tina Fey'将匹配'Batman'或'Tina Fey'。
如果 Batman 和 Tina Fey 都出现在被查找的字符串中,第一次出现的匹配文本,将作为 Match 对象返回。
3、用问号实现可选匹配,示例代码:
有时候,想匹配的模式是可选的。就是说,不论这段文本在不在,正则表达式都会认为匹配。字符?表明它前面的分组在这个模式中是可选的。
4、用星号匹配零次或多次,示例代码:
*(称为星号)意味着“匹配零次或多次”,即星号之前的分组,可以在文本中出Python 编程快速上手——让繁琐工作自动化现任意次。它可以
完全不存在,或一次又一次地重复。
对于'Batman',正则表达式的(wo)*部分匹配 wo 的零个实例。对于'Batwoman',(wo)*匹配 wo 的一个实例。对于'Batwowowowoman',(wo)*匹配
wo 的 4 个实例。
如果需要匹配真正的星号字符,就在正则表达式的星号字符前加上倒斜杠,即\*。
5、用加好匹配一次或多次,示例代码:
*意味着“匹配零次或多次”,+(加号)则意味着“匹配一次或多次”。星号不要求分组出现在匹配的字符串中,但加号不同,加号前面的分组必须“至少
出现一次”。这不是可选的。
正则表达式 Bat(wo)+man 不会匹配字符串'The Adventures of Batman',因为加号要求 wo 至少出现一次。
如果需要匹配真正的加号字符,在加号前面加上倒斜杠实现转义:\+。
6、用花括号匹配特定次数,示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #用 import re 导入正则表达式模块。 phoneNumregex = re. compile (r '(\d{3})-(\d{3}-\d{4})' ) #使用括号进行分组。 text = phoneNumregex.search( 'My number is 415-555-4242' ) #向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。 print (text.group( 1 )) #调用 Match 对象的 group()方法,返回分组1的内容。 phoneNumregex = re. compile (r '(\d\d\d)-(\d\d\d-\d\d\d\d)' ) #使用括号进行分组。 text = phoneNumregex.search( 'My number is 415-555-4242' ) #向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。 print (text.group( 1 )) #调用 Match 对象的 group()方法,返回分组1的内容。 |
运行结果:
根据结果可以看出,两段代码效果完全一致,花括号只是匹配相同内容的次数。
【推荐】国内首个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的设计差异