Re.Match 类的介绍 | 学习笔记

简介: 快速学习 Re.Match 类的介绍

开发者学堂课程【Python 入门 2020年版:Re.Match 类的介绍 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10443


Re.Match 类的介绍

内容介绍:

一、 re.Match 类介绍

二、 re.Match 属性和方法

三、 group 方法

 

一、 re.Match 介绍

调用 re.match 方法、re.search 方法,或者对 re.finditer 方法的结果进行遍历时,拿到的数据类型都是 re.Match 对象。

例如:

import re

m = re.search(r'm' , ' o3rjomjadas')

print(m)

输出的结果为:

#<re.Match object; span=(5,6), match= 'm '>

二、 re.Match 属性和方法

如果想看其中有哪些属性哪些方法,使用 dir,可以列出其中所有属性和方法。

print(dir(m))

结果会输出' endpos ', 'expand ', 'group', 'groupdict', 'groups ', 'lastgroup' 等等的很多方法和属性。

(一)、属性和方法

1、pos:搜索的开始位置

2、endpos:搜索的结束位置

3、string:搜索的字符串

4、re:当前使用的正则表达式对象

5、lastindex:最后匹配的组索引

6、lastgroup:最后匹配的组名

7、group(index):某个组匹配的结果

8、groups():所有分组的匹配结果,每个分组组成的结果以列表返回

9、groupdict():返回组名作为 key,每个分组的匹配结果作为 value 的字典

10、start([group]):获取组的开始位置

11、end([group]):获取组的结束位置

12、span([group]):匹配到的结果字符串的开始和结束下标

13、expend([template]):使用组的匹配结果来替换 template 的内容,并把替换后的字符串返回。

字母表达式规则:

表示任意字符;*表示出现任意次数

使用 group 方法可以获取匹配的字符串结果:

print(m.group())

group 可以作参,表示 n 个分组:

print(m.group(0))

(二)、例子

import re

p = re.compile(r"(abc)\1")

m = p.match("abcabcabc")

print m.group(0)

print m.group(1)

print m.group()

p = re.compile(r"(?P<one>abc)(?P=one)")

m = p.search("abcabcabc")

print m.group(0)

print m.group("one")

print m.groupdict().keys()

print m.groupdict().values()

print m.re.pattern

(三)、代码解析

第二行:定义了一个分组 "(abc)", 在后面使用 "\1" 再次调用该分组。即 compile() 返回 1 个包含 2 个分组的正则表达式对象 p.

第三行:p.match() 对字符串 "abcabcabc" 进行搜索,返回一个 match 对象 m

第四行:调用 match 对象的 group(0) 方法,将匹配整个表达式,输出结果: abcabc

第五行:调用 match 对象的 group(1) 方法,返回第一次匹配成功的结果,输出结果为:abc

第六行:默认情况下,返回分组 0 的结果,输出结果:abcabc

第八行:给分组命令,"?P<one>" 中的 "one" 表示分组的名称。"(?P=one)" 调用分组 "one",相当于 "\1"

第十行:输出分组 "one" 的结果,输出结果:abc

第十一行:获取正则表达式中分组的名称,输出结果为 : ['one']

第十二行:获取正则表达式中分组的内容,输出结果为 :['abc']

第十三行:

获取当前使用的正则表达式,输出结果: (?P<one>abc)(?P=one)

print(m.pos,m.endpos)

输出的结果为:0  11

pos 属性表示文本中正则表达式开始搜索的索引。值与 Pattern.match() 和Pattern.seach() 方法中的同名参数相同。

endpos 该属性表示文本中正则表达式结束搜索的索引。值与 Pattern.match( ) 和 Pattern.seach() 方法中的同名参数相同。

print(m.span())

输出的结果为:(5,6)

span 属性表示正则表达式匹配到的结果字符串的开始和结束下标。

 

三、 group 方法

正则表达式中,group()用来提出分组截获的字符串,()用来分组。

print(m.group())

输出的结果为:mjada

print(m.group(0))

输出的结果为:mjada

print(m.group(1))

输出的结果为:IndexError: no such group

使用 group 方法可以获取匹配的字符串结果# group 可以传参,表示第 n 个分组

(一)、group 方法表示正则表达式的分组:

1. 在正则表达式里使用()表示一个分组

2. 如果没有分组,默认只有一组

3. 分组的下标从开始

group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

m1=re.search(r' (9.*)(0.*)(5.*7)',

'da9fi0riel5kfsda7ifsdaiferit' )

这个正则表达式有 4 个组。

分组 0 : (9.*)(0.*)(5.*7)

第1组:(9.*)

print(m1.group(0))

输出结果为:9fi0riel5kfsda7

第 0 组就是把整个正则表达式当做一个整体。

print(m1.group())#默认拿第0组。

print(m1.group(1))#9fi

print(m1.group(2))#0riel

print(m1.group(3))#5kfsda7

(二)、groupdict

1、作用:是获取到分组组成的字典

2、例子:

#print(m1. groupdict())

输出结果为:{}

#(?P<name>表达式)可以给分组起一个名字

m2=re.search(r'(9.*)(?P<xxx>0.*)(5.*7)','da9fiorie15kfsda7ifsdaiferit')

print(m2.groupdict())

输出的结果为:{ ' xxx ' : '0riel'}, ' xxx '为名字,'0riel'为匹配结果

#可以通过分组名或者分组的下标获取到分组里匹配到的字符串

Print(m2.group(‘xxx’))

m2.group(2)

正则表达式中的三组括号把匹配结果分成三组:

group() 同 group(0)就是匹配正则表达式整体结果,group(1)  列出第一个括号匹配部分,group(2)  列出第二个括号匹配部分,group(3)  列出第三个括号匹配部分。

没有匹配成功的,re.search()返回 None

当然正则表达式中没有括号,group(1) 肯定不对了

 

相关文章
|
4月前
|
Android开发 Kotlin
Android经典面试题之Kotlin的==和===有什么区别?
本文介绍了 Kotlin 中 `==` 和 `===` 操作符的区别:`==` 用于比较值是否相等,而 `===` 用于检查对象身份。对于基本类型,两者行为相似;对于对象引用,`==` 比较值相等性,`===` 检查引用是否指向同一实例。此外,还列举了其他常用比较操作符及其应用场景。
203 93
|
5月前
|
Android开发
android基础:Intents 和 intent-filter 的匹配规则
这篇文章详细解释了Android开发中Intent和<intent-filter>的匹配规则,包括Action、Category和Data的解析规则以及如何通过这些规则匹配隐式Intent。
175 1
33.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别
33.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别
|
索引 Python
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
143 0
|
Android开发
Android 中Uri.parse()的作用
Android 中Uri.parse()的作用
253 0
|
自然语言处理 Java 关系型数据库
当Android的Kotlin出现了Unresolved reference:***(设置的控件id)
这几天学习Kotlin,在看郭霖老师的《第一行代码》第三版这本书,这里一段程序,同样得样例,自己敲会报错(入图),很疑惑,自己手动解决了。 这里出现了Unresolved reference: recyclerView,我前面activity_main.xml设置了一个id 解决这问题,要在MainActivity加入包 import kotlinx.android.synthetic.main.activity_main.* 如果kotlinx 报红了,要在app的build.gradle文件中
2235 0
当Android的Kotlin出现了Unresolved reference:***(设置的控件id)
|
开发者 索引
Match_all|学习笔记
快速学习 Match_all。
114 0
|
开发者 索引
match_all | 学习笔记
快速学习 match_all
|
Scala 开发者
Match 的注意事项和细节 | 学习笔记
快速学习 Match 的注意事项和细节