全国咨询热线:400-618-4000

python正则表达式match search 和findall之间的区别是什么?[软件测试培训]

创建时间:2019年11月11日15时24分

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。


re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法

re.match(pattern, string, flags=0)

函数参数说明:
参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。
 
re模块的使用过程:


# coding=utf-8
# 导入re模块
import re

# 使用match方法进行匹配操作
result = re.match(正则表达式, 要匹配的字符串)

 
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。


匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。



# coding=utf-8

# 导入re模块
import re

# 使用match方法进行匹配操作
result = re.match(正则表达式, 要匹配的字符串)

# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()


1、re 模块案例:
匹配以itcast开头的语句


#coding=utf-8

  import re

  result = re.match("itcast","itcast.cn")

  result.group()


运行结果为:
itcast

2、re.search

re.match 只能在起始位置匹配,而re.search可以扫描整个字符串并返回第一个成功的匹配
需求:匹配出文章阅读的次数


#coding=utf-8
import re

ret = re.search(r"\d+", "阅读次数为 9999")
ret.group()


运行结果:
'9999'


3、re.findall
re.match和re.search两个都只能找到一个匹配结果,而findall可以找到所有满足匹配条件的结果,并以列表的形式返回。

需求:统计出python、c、c++相应文章阅读的次数
 


#coding=utf-8
import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret)


运行结果:
['9999', '7890', '12345']


三者之间的区别:

模式 匹配方法 返回结构
match 只从字符串起始位置进行匹配 None或者起始位置匹配成功的字符
search 整个字符串,并且返回第一个符合要求的匹配 第一个匹配成功的字符串
findall 返回字符串满足要求的所有的匹配 所有结果,并且以列表形式返回



推荐了解:传智播客软件测试学科