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

作者:编程家 分类: regex 时间:2025-10-22

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

在 Python 中,正则表达式是一种强大的工具,用于在字符串中匹配和搜索特定的模式。re.search() 和 re.findall() 是两个常用的函数,用于在字符串中查找匹配的模式。

re.search() 函数用于在字符串中查找第一个匹配的模式,并返回一个匹配对象。如果找到了匹配的模式,则可以使用匹配对象的方法和属性来进一步处理数据。

re.findall() 函数用于在字符串中查找所有匹配的模式,并返回一个包含所有匹配结果的列表。这个函数可以一次性找到所有匹配的模式,方便后续的处理和分析。

下面是一个简单的例子,演示了如何使用 re.search() 和 re.findall() 函数:

python

import re

# 使用 re.search() 查找第一个匹配的模式

text = "Hello, World! This is a sample text."

pattern = r"\b\w+"

match = re.search(pattern, text)

if match:

print("First match found:", match.group())

# 使用 re.findall() 查找所有匹配的模式

matches = re.findall(pattern, text)

print("All matches found:", matches)

输出结果如下:

First match found: Hello

All matches found: ['Hello', 'World', 'This', 'is', 'a', 'sample', 'text']

在上面的例子中,我们使用 re.search() 函数查找第一个以字母开头的单词,并通过匹配对象的 group() 方法获取匹配的结果。同时,我们使用 re.findall() 函数查找所有以字母开头的单词,并将结果存储在一个列表中。

正则表达式的模式可以根据需求进行调整,以匹配不同的文本模式。这些模式可以包含特殊字符和元字符,用于表示不同类型的字符或字符集合。

接下来,我们将进一步探索正则表达式的应用,并介绍一些常用的模式和技巧。

常用的正则表达式模式

1. 匹配数字

如果想要匹配字符串中的数字,可以使用 \d 表示任意一个数字。例如,\d+ 可以匹配一个或多个数字。

python

import re

text = "I have 3 apples and 5 oranges."

pattern = r"\d+"

matches = re.findall(pattern, text)

print("Numbers found:", matches)

输出结果如下:

Numbers found: ['3', '5']

在上面的例子中,我们使用 \d+ 模式匹配了字符串中的数字,并使用 re.findall() 函数找到了所有匹配的结果。

2. 匹配字母和数字

如果想要匹配字符串中的字母和数字,可以使用 \w 表示任意一个字母或数字。例如,\w+ 可以匹配一个或多个字母或数字。

python

import re

text = "Hello, World! This is a sample text."

pattern = r"\w+"

matches = re.findall(pattern, text)

print("Alphanumerics found:", matches)

输出结果如下:

Alphanumerics found: ['Hello', 'World', 'This', 'is', 'a', 'sample', 'text']

在上面的例子中,我们使用 \w+ 模式匹配了字符串中的字母和数字,并使用 re.findall() 函数找到了所有匹配的结果。

3. 匹配邮箱地址

如果想要匹配字符串中的邮箱地址,可以使用特定的模式来实现。例如,\w+@\w+\.\w+ 可以匹配一个邮箱地址。

python

import re

text = "My email address is example@example.com."

pattern = r"\w+@\w+\.\w+"

match = re.search(pattern, text)

if match:

print("Email address found:", match.group())

输出结果如下:

Email address found: example@example.com

在上面的例子中,我们使用 \w+@\w+\.\w+ 模式匹配了字符串中的邮箱地址,并使用 re.search() 函数找到了第一个匹配的结果。

通过使用 Python 的正则表达式模块 re,我们可以方便地在字符串中查找和匹配特定的模式。re.search() 和 re.findall() 是两个常用的函数,分别用于查找第一个匹配的模式和找到所有匹配的模式。

正则表达式中的模式可以根据需求进行调整,以匹配不同的文本模式。常见的模式包括匹配数字、字母和数字、邮箱地址等。

使用正则表达式可以帮助我们更加灵活和高效地处理文本数据,提取和分析感兴趣的信息。熟练掌握正则表达式的使用,对于处理文本数据的任务将大有裨益。

参考资料:

- Python 正则表达式官方文档:https://docs.python.org/3/library/re.html