小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
复习回顾
众所周知,正则表达式是一个非常实用的工具🔧,任意的字符串都可以当成正则表达式来使用。
经过前面的学习,我们对正则表达式的语言及Python 提供 re 模块相来支持正则表达式的方法使用进行深入的学习和使用,详情如下
- 正则表达式语法:对正则表达式相关起源、特殊字符(元字符)介绍及正则引擎原理说明
- 正则表达式对象编译及常量含义:Python对正则表达式的支持,re.compile()编译正则对象
- 正则表达式对象12个方法使用:re 模块提供12个正则对象的使用方法的详细介绍
Python re 模块按对象分为:Pattern对象(正则表达式对象)和 Match对象(匹配对象)
本期,我们将继续学习,Python re 模块剩余部分的知识点- match对象相关属性和方法
1. Match对象概述
我们先来看一下正则表达式匹配的流程:
- re.complie()方法对正则表达式字符串进行编译(可选步骤)
- re.match、re.search、re.fullmatch方法返回 Match 对象
- Match 对象 其实是_sre.SRE_Match()对象,包含相信的正则表达式匹配信息
🌟 Match 对象:正则表达式匹配之后返回包含匹配信息的对象
- Match 对象包含一个布尔值 True
- 当search、match、fullmatch没有找到匹配的,返回值为None
- Match对象是一次的匹配结果,包含了可读的属性和方法可以来获取相关信息
2. Match对象相关属性
| match对象属性 | 作用 |
|---|---|
| match.pos | 该属性返回给正则表达式对象 patern 的 search()、match()等方法的pos参数 |
| match.endpos | 该属性返回给正则表达式对象 pattern 的search()、match()等方法的endpos参数 |
| match.lastindex | 该属性返回最后一个匹配的捕获组的整数索引,如果没有组匹配,该属性则返回None |
| match.lastgroup | 该属性返回最后一个匹配的捕获组的名字,如果该组没有名字或者根本没有组匹配,该属性返回None |
| match.re | 该属性返回执行正则表达式匹配时所用的正则表达式 |
| match.string | 该属性返回执行正则表达式匹配时所用的字符串 |
3. Match对象相关方法
| match对象方法 | 作用 |
|---|---|
| match.group() | 获取该匹配对象中指定组所匹配的字符串 |
| match.groups() | 以元组的形式返回match对象中所有组所匹配的字符串结果 |
| match.groupdict() | 以字典的形式返回match对象中所匹配的字符串结果 |
| match.start() | 获取该匹配对象中指定组所匹配的字符串的开始位置 |
| match.end() | 获取该匹配对象中指定组所匹配的字符串的结束位置 |
| match.span() | 获取该匹配对象中指定组所匹配的字符串的开始位置和结束位置 |
| match.getitem() | 这是match.group(g)的简化写法 |
4. Match对象与Pattern对象区别
-
Match 对象
- 是一次匹配的结果
- 包含正则表达式匹配的位置、正则表达式所匹配的子串
- 提供属性和方法,可供查询匹配对象详细信息
举个例子🌰
import re
m = re.search("(\w+) (\w+)(?P<last>.*)","hello Juejin~")
print("m.string",m.string)
print("m.pos",m.pos)
print("m.endpos",m.endpos)
print("m.lastindex",m.lastindex)
print("m.lastgroup",m.lastgroup)
print("m.group(1,2)",m.group(1,2))
print("m.groups()",m.groups())
print("m.groupdict()",m.groupdict())
print("m.start(2)",m.start(2))
print("m.end(2)",m.end(2))
print("m.span(2)",m.span(2))
print("m.expand(r'\2 \1\3'):",m.expand(r'\2 \1\3'))
-
Pattern 对象
-
Pattern对象是一个编译好的正则表达式
-
re 模块提供Pattern一系列的方法可以对文本进行匹配查找、替换等操作
-
Pattern 不能直接实例化,必须使用re.compile()进行提前编译
-
Pattern 也提供可读的属性来获取表达式相关信息
-
Pattern 属性:
属性 作用 pattern 编译时的表达式字符串 flags 编译时用的匹配模式,类型为数字 groups 表达式中分组的数量 groupindex 表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内
-
举个例子🌰
import re
p = re.compile("(\w+) (\w+)(?P<last>.*)",re.S)
print("p.pattern:", p.pattern)
print("p.flags:",p.flags)
print("p.groups:",p.groups)
print("p.groupindex:",p.groupindex)
总结
本期,我们学习完成了Python re模块中- match对象相关属性和方法的使用。
Python 内置库 re 模块两个类正则表达式对象(Pattern)和 匹配对象(Match)
Pattern 对象要经过编译后进行使用re 模块提供的方法,Match对象是Pattern对象匹配之后返回包含匹配结果的信息
以上是本期内容,欢迎大佬点赞评论,我们下期见~♥️