详解Python re.search.group函数:返回匹配的子串

  • Post category:Python

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 函数在字符串中查找匹配项,如果匹配成功则输出匹配项。