【愚公系列】《Python网络爬虫从入门到精通》009-使用match()进行匹配

举报
愚公搬代码 发表于 2025/04/30 23:51:56 2025/04/30
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。