re 模块是 Python 的正则表达式处理模块,提供了一系列的函数来搜索与匹配字符串。其中,re.search 函数是在字符串中搜索正则表达式模式的第一个匹配项的函数。
re.search 函数的语法如下:
re.search(pattern, string, flags=0)
其中,参数 pattern 为正则表达式的模式,参数 string 是需要匹配的字符串,flags 是正则表达式的匹配方式。
在 re.search 函数找到匹配项后,我们可以通过调用 .group() 函数来获取匹配项。.group() 函数的语法如下:
group([group1, ...])
其中,参数 group1, … 是可选的,表示需要获取的匹配对象的特定组,从 1 开始。如果不传入参数,则返回整个匹配项的文本,如果传入参数,则返回匹配对象的特定组。
接下来,我们通过两个实例来说明 re.search.group 函数的使用方法。
实例1:匹配邮箱
假设我们需要从一个字符串列表中匹配出所有的邮箱地址,我们可以使用以下代码实现:
import re
# 定义正则表达式模式
email_pattern = r"\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b"
# 测试用的字符串列表
strings = ["my email is abc@qq.com", "please send email to def@163.com", "his email is ghi@outlook.com"]
# 遍历字符串列表
for string in strings:
# 在字符串中搜索
match = re.search(email_pattern, string)
# 如果匹配成功,则输出匹配项
if match is not None:
print(match.group())
在这个例子中,我们首先定义了一个正则表达式模式,该模式可以匹配出所有合法的邮箱地址。然后,我们测试了一个字符串列表,遍历列表中字符串,使用 re.search 函数在字符串中查找匹配项,如果匹配成功则输出匹配项。
实例2:匹配网址
再假设我们需要从一个字符串列表中匹配出所有的网址,我们可以使用以下代码实现:
import re
# 定义正则表达式模式
url_pattern = r"\b(?:https?://|www\.)\S+\b"
# 测试用的字符串列表
strings = ["visit our website at http://www.example.com", "watch videos at https://player.vimeo.com"]
# 遍历字符串列表
for string in strings:
# 在字符串中搜索
match = re.search(url_pattern, string)
# 如果匹配成功,则输出匹配项
if match is not None:
print(match.group())
在这个例子中,我们定义了一个正则表达式模式,该模式可以匹配出所有的网址,包括以 “http://”、”https://” 或 “www.” 开头的网址。我们测试了一个字符串列表,遍历列表中的字符串,使用 re.search 函数在字符串中查找匹配项,如果匹配成功则输出匹配项。