【愚公系列】《Python网络爬虫从入门到精通》009-使用match()进行匹配
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
| 标题 | 详情 |
|---|---|
| 作者简介 | 愚公搬代码 |
| 头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
| 近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
| 博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
| 欢迎 | 👍点赞、✍评论、⭐收藏 |
🚀前言
在编程与数据处理的世界中,字符串匹配是一项常见而又重要的任务。而在众多字符串处理方法中,Python的match()函数以其简洁明了的语法和高效的匹配能力,成为了开发者们进行正则表达式匹配的首选工具。无论是在数据清洗、文本分析,还是在Web开发中,match()函数都能帮助我们快速识别和处理特定模式的数据。
在本期文章中,我们将深入探讨match()函数的使用方法及其应用场景。我们将介绍match()的基本语法、常见参数以及与其他匹配方法的区别。同时,我们还会通过具体的实例演示,帮助你理解如何利用match()函数高效地进行模式匹配,解决实际问题。
🚀一、使用match()进行匹配
match() 方法用于从字符串的开头进行匹配。若匹配成功,返回一个 Match 对象,否则返回 None。其语法格式如下:
re.match(pattern, string, flags)
参数说明:
-
pattern:正则表达式模式字符串,用于定义要匹配的规则。 -
string:待匹配的字符串。 -
flags:可选参数,表示修饰符,用于控制匹配方式,如是否区分大小写。
常用修饰符:
-
A 或 ASCII:只进行 ASCII 匹配(仅适用于 Python 3.x)。 -
I 或 IGNORECASE:不区分字母大小写。 -
L 或 LOCALE:使用当前地区设定的字符类(不常用)。 -
M 或 MULTILINE:多行匹配。 -
S 或 DOTALL:允许点号( .)匹配换行符。 -
X 或 VERBOSE:忽略模式中的空格和注释。 -
U 或 UNICODE:根据 Unicode 字符属性匹配。
在这里插入图片描述
🔎1.匹配是否以指定字符串开头
示例:匹配字符串是否以指定字符串开头
通过 re.match() 匹配字符串是否以 "mr" 开头,不区分字母大小写。
import re
pattern = 'mr_\w+' # 表达式字符串
string = 'MR_SHOP mr_shop' # 要匹配的字符串
match = re.match(pattern,string,re.I) # 匹配字符串,不区分大小写
print(match) # 输出匹配结果
string = '项目名称MR_SHOP mr_shop'
match = re.match(pattern,string,re.I) # 匹配字符串,不区分大小写
print(match) # 输出匹配结果
解释:
-
"MR_SHOP" 符合以 "mr " 开头,因此返回一个 Match对象。 -
字符串 "项目名称MR_SHOP" 并不以 "mr " 开头,返回 None。
在这里插入图片描述
🔎2.Match 对象的常用方法
Match 对象包含匹配值的位置和匹配数据,可以通过以下方法访问:
-
start():匹配值的起始位置。 -
end():匹配值的结束位置。 -
span():返回匹配值的起止位置(元组)。 -
string:原始输入字符串。 -
group():返回匹配的内容。
示例:获取 Match 对象的相关信息
import re
pattern = 'mr_\w+' # 模式字符串
string = 'MR_SHOP mr_shop' # 要匹配的字符串
match = re.match(pattern,string,re.I) # 匹配字符串,不区分大小写
print('匹配值的起始位置:',match.start())
print('匹配值的结束位置:',match.end())
print('匹配位置的元组:',match.span())
print('要匹配的字符串:',match.string)
print('匹配数据:',match.group())
在这里插入图片描述
🔎3.匹配任意开头的字符串
示例:匹配任意开头的字符串
使用 . 可以匹配任意字符,如匹配以 "ello" 开头的字符串。
import re # 导入re模块
pattern = '.ello' # 表达式
match = re.match(pattern,'hello') # 匹配字符串
print(match) # 打印匹配结果
match = re.match(pattern,'aello') # 匹配字符串
print(match)
match = re.match(pattern,'6ello') # 匹配字符串
print(match)
在这里插入图片描述
🔎4.匹配多个字符串
示例:匹配多个字符串
使用选择字符 | 可以匹配多个字符串。例如,匹配以 "hello" 或 "我" 开头的字符串。
import re # 导入re模块
pattern = 'hello|我' # 表达式,表示需要匹配“hello”或“我”开头的字符串
match = re.match(pattern,'hello word') # 匹配字符串
print(match) # 打印匹配结果
match = re.match(pattern,'我爱Python') # 匹配字符串
print(match)
在这里插入图片描述
🔎5.获取部分内容
示例:获取部分内容
通过分组捕获需要提取的子字符串。
import re # 导入re模块
# 表达式,“hello”开头,“\s”中间空格,“(\w+)”分组后面所有字母、数字以及下划线数据
pattern = 'hello\s(\w+)'
match = re.match(pattern,'hello word') # 匹配字符串
print(match) # 打印匹配结果
print(match.group()) # 打印所有匹配内容
print(match.group(1)) # 打印分组指定内容
在这里插入图片描述
🔎6.匹配指定首尾的字符串
示例:匹配指定首尾的字符串
使用 ^ 和 $ 分别匹配字符串的开头和结尾。
import re # 导入re模块
# 表达式,h开头,n$表示n结尾
pattern = 'h\w+\s[\u4e00-\u9fa5]+\s\w+n$'
match = re.match(pattern,'hello 我爱 Python') # 匹配字符串
print(match) # 打印匹配结果
print(match.group()) # 打印所有匹配内容
在这里插入图片描述
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)