Python 正则表达式 re.search() vs re.findall()

2024 年 8 月 29 日 | 4 分钟阅读

正则表达式,也称为理性表达式,是用于定义搜索模式的字符序列。它主要用于字符串的模式匹配或字符串匹配,例如查找和替换操作。正则表达式是匹配字符序列模式的通用方法。

正则表达式 (RE) 模块用于指定与模式匹配的字符串集合。要理解RE 关联,MetaCharacters 在 re 模块的函数中使用。

共有 14 个MetaCharacters,我们将按照它们在函数中的出现顺序进行讨论。

re.search() 方法

re.search() 方法用于在模式不匹配时返回 None,或返回包含有关字符串匹配部分的所有信息的re.MatchObject。此方法在第一次匹配后停止工作,因此它非常适合测试正则表达式,而不是提取数据。

示例

输出

The String match at index 25, 35
Full match of Pattern: Tuesday 12
The Weekday of Today is: Tuesday
The Date of Today is: 12

说明

在上面的代码中,我们导入了re 模块,并使用正则表达式将数据字符串与模式进行匹配,即星期几和今天的日期

表达式"([A-Za-z]+) (\d+)"应该可以匹配导入的数据字符串。它将打印[25, 35],因为它在第 25 个索引处匹配字符串,并在第 35 个索引处结束。我们使用group()函数来获取所有匹配项和捕获组,以在模式中获取所需的输出。这些组包含匹配的值。例如:

match.group(0) 将始终返回完全匹配的数据字符串,

match.group(1)match.group(2) 将按输入字符串中从左到右的顺序返回捕获组。(match.group() 也意味着match.group(0))。如果数据字符串与模式匹配,它将按正确的顺序打印;否则,它将执行 else 语句。

re.findall() 方法

re.findall() 方法用于以字符串列表的形式返回数据字符串中模式的所有非重叠匹配项。数据字符串将从左到右扫描,并且其匹配项将按找到的顺序返回。

示例

输出

['676', '564', '567', '112', '234']

说明

在上面的代码中,我们首先导入包含一些数字的文本字符串。然后,我们将正则表达式"(\d+)"设置为与模式匹配字符串。匹配将是非重叠的数据在文本字符串中。导入re.findall()方法后,我们将获得字符串的非重叠匹配数据作为输出。

结论

在本教程中,我们通过示例讨论了 Python 正则表达式中re.search()方法和re.findall()方法之间的区别。