Re.Match类的介绍 | 手把手教你入门Python之八十六

简介: 当我们调⽤ re.match ⽅法、 re.search ⽅法,或者对 re.finditer ⽅法的结果进⾏迭代时,拿到的数据类型都是 re.Match 对象。

上一篇:正则查找相关的方法 | 手把手教你入门Python之八十五
下一篇:正则修饰符的使用 | 手把手教你入门Python之八十七

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

Re.Match类的介绍

当我们调⽤ re.match ⽅法、 re.search ⽅法,或者对 re.finditer ⽅法的结果进⾏迭代时,拿到的数据类型都是 re.Match 对象。

x = re.match(r'h','hello')
y = re.search(r'e','hello')
z = re.finditer(r'l','hello')
print(type(x)) # <class 're.Match'>
print(type(y)) # <class 're.Match'>
for a in z:
    print(type(a)) # <class 're.Match'>

这个类⾥定义了相关的属性,可以直接让我们来使⽤。
image.png

ret = re.search(r'(abc)+', 'xxxabcabcabcdef')
print(ret.pos) # 搜索开始的位置,默认是0
print(ret.endpos) # 搜索结束的位置,默认是字符串的⻓度
print(ret.group(0)) # abcabcabc 匹配整个表达式
print(ret.group(1)) # abc 第⼀次匹配到的结果
print(ret.span()) # (3, 12) 开始和结束位置
print(ret.groups()) # 表示当正则表达式⾥有多个分组时,多个分组的匹配结果

group方法表示正则表达式的分组:
1、在正则表达式里使用 () 表示一个分组
2、如果没有分组,默认只有一组
3、分组的下标从 0 开始

# 正则表达式有 4 个分组
m1 = re.search(r'(9.*)(0.*)(5.*7)', 'da9fi0rie15kfsda7ifsdaiferit')
print(m1.group(0)) # 第 0 组就是把整个表达式当做一个整体
print(m1.group()) # 默认就是拿第 0 组
print(m1.group(1))  # 9fi
print(m1.group(2)) # 0riel
print(m1.group(3)) # 5kfsda7

print(m1.groups())  # ('9fi', '0riel', '5kfsda7')
# groupdict 作用是获取到分组组成的字典
# print(m1.groupdict())  # {}

# (?P<name>表达式)  可以给分组起一个名字
m2 = re.search(r'(9.*)(?P<xxx>0.*)(5.*7)', 'da9fi0rie15kfsda7ifsdaiferit')
print(m2.groupdict())  # {'xxx': '0riel'}
print(m2.groupdict('xxx'))  # {'xxx': '0riel'}

# 可以通过分组名或者分组的下标获取到分组里匹配到的字符串
print(m2.group('xxx'))
m2.group(2)

re.compile⽅法的使⽤

我们在使⽤正则表达式时,可以直接调⽤ re 模块的 matchsearchfindall 等⽅法,传⼊指定的正则表达式。同时,也可以调⽤re.compile⽅法,⽣成⼀个正则表达式对象,再调⽤这个正则表达式对象的相关⽅法实现匹配。
示例:

re.match(r'h','hello') # 可以使⽤re.match⽅法直接匹配
# 也可以调⽤re模块的compile⽅法,⽣成⼀个 Pattern 对象,再调⽤ Pattern 对象的 match⽅法
regex = re.compile(r'h')
regex.match('hello')

re.search(r'l','hello')
regex = re.compile(r'l')
regex.match('hello')

regex = re.compile(r'l')
regex.findall('hello')

regex = re.complie(r'l')
regex.finditer('hello')

配套视频

相关文章
|
2天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
2天前
|
存储 索引 Python
Python从入门到精通——1.3.1练习编写简单程序
Python从入门到精通——1.3.1练习编写简单程序
|
2天前
|
开发框架 前端开发 数据库
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
Python从入门到精通:3.3.2 深入学习Python库和框架:Web开发框架的探索与实践
|
2天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
2天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
3天前
|
Python
Python 一步一步教你用pyglet制作可播放音乐的扬声器类
Python 一步一步教你用pyglet制作可播放音乐的扬声器类
14 0
|
8天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
8天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
35 0
|
9天前
|
机器学习/深度学习 数据采集 算法
scikit-learn入门指南:从基础到实践
【4月更文挑战第17天】这篇指南介绍了scikit-learn,一个Python数据分析和机器学习的重要库。内容涵盖安装、数据加载与预处理、模型训练(如KNN分类器)、评估、调参优化及高级应用,如降维和聚类。通过实例展示了scikit-learn在分类任务中的使用,强调其在数据科学中的重要性。要深入了解,可参考官方文档和实践案例。