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

Python中如何使用re库中的findall函数查找正则表达式匹配的字符串

发布时间:2023-06-30 18:42:56

在Python中,可以使用re库中的findall函数来查找正则表达式匹配的字符串。findall函数的语法如下:

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

其中,pattern是要匹配的正则表达式,string是要查找的字符串,flags是可选参数,用于控制匹配的模式。findall函数会返回一个包含所有匹配的字符串的列表。

以下是一个使用findall函数的示例:

import re

string = "My phone number is 123-456-7890 and my email is example@gmail.com"

# 使用正则表达式查找电话号码

phone_numbers = re.findall(r'\d{3}-\d{3}-\d{4}', string)

print("Phone numbers:")

for number in phone_numbers:

    print(number)

# 使用正则表达式查找邮箱地址

emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', string)

print("Emails:")

for email in emails:

    print(email)

在上述例子中,我们使用了两个正则表达式来匹配电话号码和邮箱地址。对于电话号码,正则表达式为r'\d{3}-\d{3}-\d{4}',其中\d表示任意数字字符,{3}表示前面字符的数量为3个,-表示普通字符,没有特殊含义。

对于邮箱地址,正则表达式为r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b',其中\b表示单词边界,[A-Za-z0-9._%+-]表示包含字母、数字、特殊字符的组合,+表示至少一个字符,@表示普通字符,没有特殊含义。\.[A-Za-z]{2,}表示一个点和至少两个字母组成的 域名,\b表示单词边界。

执行上述代码,输出结果如下:

Phone numbers:

123-456-7890

Emails:

example@gmail.com

可以看到,findall函数成功找到了字符串中的电话号码和邮箱地址,并将其以列表的形式返回。

需要注意的是,findall函数返回的是所有匹配的字符串,而不是匹配对象。如果需要获取更多有关匹配对象的信息,可以使用re.finditer函数。