Python学习笔记模式匹配与正则表达式之findall()方法
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
除了search方法外,Regex对象也有一个findall()方法。search()将返回一个Match对象,包含被查找字符串
中的“第一次”匹配的文本,而findall()方法将返回一组字符串,包含被查找字符串中的所有匹配。
#------------------------------------------------我是可耻的分割线-------------------------------------------
1、search()返回Match对象,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #导入模块 phoneNumRegex = re. compile (r '\d{3}-\d{3}-\d{4}' ) #设置正则表达式,匹配电话号码 mo = phoneNumRegex.search( 'My phone is 423-555-4242,423-555-3366' ) #传入文本中存在两个匹配正则表达式的电话号码 print (mo.group()) #打印search()方法查找到的匹配内容 |
运行结果:
根据运行结果可以看出,search()方法只返回第一次匹配的内容。
2、findall()返回Match对象,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re #导入模块 phoneNumRegex = re. compile (r '\d{3}-\d{3}-\d{4}' ) #设置正则表达式,匹配电话号码 mo = phoneNumRegex.findall( 'My phone is 423-555-4242,423-555-3366' ) #传入文本中存在两个匹配正则表达式的电话号码 print (mo) #打印search()方法查找到的匹配内容 |
运行结果:
根据运行结果可以看出,findall()方法返回所有匹配内容。
作为 findall()方法的返回结果的总结,请记住下面两点:
1.如果调用在一个没有分组的正则表达式上,例如\d\d\d-\d\d\d-\d\d\d\d,方法findall()将返回一个匹配字符串的列表,例如['415-555-9999', '212-555-0000']。
2.如果调用在一个有分组的正则表达式上,例如(\d\d\d)-(\d\d\d)-(\d\d\d\d),方法 findall()将返回一个字符串的元组的列表(每个分组对应一个字符串),
例如[('415','555', '1122'), ('212', '555', '0000')]。
【推荐】国内首个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的设计差异