欢迎访问宙启技术站
智能推送

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()函数。