标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
在数据处理和文本分析的过程中,字符串匹配是一个常见而重要的任务。Python的正则表达式库提供了多种匹配工具,其中findall()函数因其强大的功能和简单的用法,成为了许多开发者和数据分析师的得力助手。与其他匹配方法相比,findall()能够在给定字符串中找到所有符合条件的匹配项,极大地方便了我们对数据的全面提取和分析。
在本期文章中,我们将深入探讨findall()函数的使用方法及其应用场景。我们将介绍findall()的基本语法、常见参数,以及与其他匹配方法(如search()和match())的区别。通过具体的实例,我们将展示如何利用findall()函数高效地提取文本中的所有匹配内容,帮助你提升数据处理的效率和准确性。
方法作用
re.findall()
在字符串中搜索所有符合正则表达式的子串,返回包含所有匹配结果的列表(无匹配时返回空列表)。
语法格式
re.findall(pattern, string, flags=0)
参数说明
pattern
: 正则表达式(字符串形式)string
: 待匹配字符串flags
: 修饰符(可选,如re.I
忽略大小写)🔎1.匹配所有指定字符开头的字符串import re
pattern = 'mr_\w+' # 模式字符串
string = 'MR_SHOP mr_shop' # 要匹配的字符串
match = re.findall(pattern,string,re.I) # 搜索字符串,不区分大小写
print(match) # 输出匹配结果
string = '项目名称MR_SHOP mr_shop'
match = re.findall(pattern,string) # 搜索字符串,区分大小写
print(match) # 输出匹配结果
关键点
re.I
修饰符使匹配不区分大小写。.*
)import re # 导入re模块
pattern = 'https://.*/' # 表达式,“.*”获取www.hao123.com
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
import re # 导入re模块
pattern = 'https://(.*)/' # 表达式,“.*”获取www.hao123.com
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
关键点
.*
为贪婪匹配,会匹配到最后一个符合条件的字符。(.*)
分组可提取特定部分。.*?
)import re # 导入re模块
pattern = 'https://.*(\d+).com/' # 表达式,“.*”获取www.hao123.com
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
import re # 导入re模块
pattern = 'https://.*?(\d+).com/' # 表达式,“.*”获取www.hao123.com
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
import re # 导入re模块
pattern = 'https://(.*?)' # 表达式,“.*?”获取www.hao123.com/
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
pattern = 'https://(.*)' # 表达式,“.*”获取www.hao123.com/
match = re.findall(pattern,'https://www.hao123.com/') # 匹配字符串
print(match) # 打印匹配结果
关键点
.*?
为非贪婪匹配,尽可能少匹配字符。场景 | 正则表达式 | 匹配结果 | 说明 |
---|---|---|---|
提取中间数字 |
|
| 贪婪匹配吞掉大部分字符 |
提取中间数字 |
|
| 非贪婪精准定位目标 |
提取URL域名 |
|
| 非贪婪可能提前结束 |
提取URL域名 |
|
| 贪婪匹配完整内容 |
r''
)避免转义错误。.*
)适用于提取尾部内容,非贪婪匹配(.*?
)适用于精准定位中间内容。findall()
特性 re.I
、re.M
等修饰符需根据需求添加。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。