Python中re模块的findall()函数和search()函数的区别和用途
发布时间:2024-01-09 06:37:25
re模块是Python的内置模块,用于处理正则表达式。re模块提供了一系列函数来进行与正则表达式相关的操作,其中最常用的两个函数是findall()和search()。这两个函数的区别和用途如下:
1. findall()函数:findall()函数用于从字符串中查找所有匹配正则表达式的子串,并返回一个包含所有匹配结果的列表。findall()函数的语法如下:
re.findall(pattern, string)
其中,pattern是一个正则表达式,用于描述所要查找的子串的规则,string是要进行查找的字符串。
使用findall()函数的例子如下:
import re # 查找字符串中的所有数字 string = "Today is October 20th, 2021." numbers = re.findall(r'\d+', string) print(numbers) # ['20', '2021']
在上例中,正则表达式\d+表示匹配一个或多个数字。findall()函数找到了所有满足这个规则的子串,并将它们作为一个列表返回。
2. search()函数:search()函数用于在字符串中查找 个匹配正则表达式的子串,并返回一个包含匹配结果的匹配对象。search()函数的语法如下:
re.search(pattern, string)
其中,pattern是一个正则表达式,用于描述所要查找的子串的规则,string是要进行查找的字符串。
使用search()函数的例子如下:
import re
# 查找字符串中的 个数字
string = "Today is October 20th, 2021."
match = re.search(r'\d+', string)
if match:
number = match.group()
print(number) # 20
在上例中,正则表达式\d+表示匹配一个或多个数字。search()函数找到了 个满足这个规则的子串,并返回一个匹配对象。我们可以通过调用匹配对象的group()方法获取匹配到的子串。
从上述例子可以看出,findall()函数和search()函数的区别主要在于返回值的类型和功能。findall()函数返回所有匹配结果的列表,而search()函数返回 个匹配结果的匹配对象。因此,如果需要查找所有匹配结果并将它们保存为一个列表,可以使用findall()函数;如果只需要查找 个匹配结果,可以使用search()函数。
