正则查找相关的方法 | 学习笔记

简介: 快速学习 正则查找相关的方法

开发者学堂课程【Python入门 2020年版正则查找相关的方法】学习笔记,与课程紧密联系,让用户快速学习知识。

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


正则查找相关的方法


内容介绍:

一、 match search 方法的使用

二、 finditer 方法

三、 findall 方法

四、 fullmatch 方法


Python 中的查找匹配方法,常见的有下面五种,他们的用法大致相同,但是匹配出的结果却不同。


一、match 和s earch 方法的使用

match 方法(只匹配字符串开头):查找字符串,返回的结果是一个 re.Match 对象。

search 方法(扫描整个字符串,找到第一个匹配):查找字符串,返回的结果是一个 re.Match 对象。但是与 match 方法是有区别的。

m1 = re.match(r " hello', 'hello wrold good morining ' )

print(m1)

m2 = re.search(r' hello', 'hello wrold good morining ' )

print(m2)

输出结果:

5),match=' hello '>

5), match= 'hello '>

其中的 span,表示的是匹配到的开始,这里是从0开始到5结束但不包括5。假如r后面是‘hel’,则 span = (0,3)

两个输出结果都是相同的。我们给他改一下后。

m2 = re.search(r' hello', 'hello wrold good morining ' )

print(m2)

输出的结果是:

16), match='good ' >

m3 = re.match(r'good ' , 'hello wrold good morining ' )

print(m3)

而这个时候输出的结果就是 None

两者共同点:

1.    只对字符串查询一次

2.    返回值类型都是re.Match类型的对象

两者不同点:

match 是从头开始匹配,一旦匹配失败,就返回 None。只要查找的内容不在开头就会返回 None

search 是在整个字符串里匹配,只要字符串中有查找的字符串就会匹配成功。


二、finditer 方法

扫描整个字符串,找到所有的匹配,并返回一个可迭代对象返回的结果是个可迭代对象。

当我们用 search 方法的时候,无法对所有需要查找的字符串进行匹配,而是只能查找第一个。

print(re.search(r'x ' , ‘klxdasxadfxidfasxdfidzxds'))

输出的结果为:


我们看到只能匹配到第一个 x

m3 = re.finditer(r'x', 'klxdasxadfxidfasxdfidzxds ' )

print(isinstance(m3Iterable))

for t in m3:

print(t)

输出的结果是:

True

3)match='x '>

7), match= 'x '>

11),match='x '>

17),match='x '>

23),match='x ' >

输出为 True 表示 m3是个可迭代对象。


三、findall 方法

扫描整个字符串,找到所有的匹配。

m4 = re.findall(r'x','klxdasxadfxidfasxdfidzxds')

print(m4)

输出的结果为:

[x, x, x, x, x]

将所有匹配到的字符串匹配到列表里。

m4 = re.findall(r'x\d+','klx45dasx78adfxidfasx6dfidzxds')

print(m4)

输出的结果为:

[x45, x78, x6]

这里用到正则表达式,查找 x 后面有数字的字符串进行匹配,x 后面没有数字不会进行匹配。


四、fullmatch 方法

扫描整个字符串。

m5 = re.fullmatch(r" hello world ', 'hello world ')

print(m5)

输出的结果为:

11)match='hello world ' >

当查找的字符串完全相同会完成匹配。不同的时候会返回值 None

m6 = re.fullmatch(r"h.*d, hoirjegoriejgd)

print(m6)

输出的结果为:

5),match= 'hoirjegoriejgd '>

h”和“d”之间出现一次或多次的任意字符的情况也可以完全匹配,无论字符串“h”和“d”之间的字符串是怎么样的都可以完成匹配。

相关文章
|
7月前
|
JavaScript 前端开发 Java
|
4月前
正则查找符合条件的数据
正则查找符合条件的数据
38 0
|
4月前
|
Python
【已解决】如何用正则提取小括号的内容
【已解决】如何用正则提取小括号的内容
105 0
|
5月前
|
数据采集 Java 数据处理
正则表达式替换技巧与实用案例分享
正则表达式替换技巧与实用案例分享
|
数据采集 开发者
正则中re高级用法findall中的一个小坑
正则中re高级用法findall中的一个小坑
|
程序员
学好正则表达式,啥难匹配的内容都给我匹配上
学好正则表达式,啥难匹配的内容都给我匹配上
|
人工智能 自然语言处理 机器人
匹配问答|学习笔记
快速学习匹配问答
147 0
匹配问答|学习笔记
|
开发者 Python
正则替换 | 学习笔记
快速学习 正则替换
113 0
正则替换 | 学习笔记