Python re模块正则使用方法(三)之match对象

766 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

复习回顾

众所周知,正则表达式是一个非常实用的工具🔧,任意的字符串都可以当成正则表达式来使用。

经过前面的学习,我们对正则表达式的语言及Python 提供 re 模块相来支持正则表达式的方法使用进行深入的学习和使用,详情如下

Python re 模块按对象分为:Pattern对象(正则表达式对象)和 Match对象(匹配对象)

本期,我们将继续学习,Python re 模块剩余部分的知识点- match对象相关属性和方法

1. Match对象概述

我们先来看一下正则表达式匹配的流程:

  1. re.complie()方法对正则表达式字符串进行编译(可选步骤)
  2. re.match、re.search、re.fullmatch方法返回 Match 对象
  3. 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对象匹配之后返回包含匹配结果的信息

以上是本期内容,欢迎大佬点赞评论,我们下期见~♥️