详解Python re.findall函数:查找字符串中所有匹配模式的子串

  • Post category:Python

Python内置的 re 模块用于字符模式匹配,是文本处理中非常常用的模块,re.findall() 函数是其中一个常用函数,本文将对它的作用、使用方法、语法规则进行详细讲解,并提供实例说明。

1. re.findall() 函数的作用

re.findall()函数在字符串中查找正则表达式所匹配的所有结果,并以列表(list)形式返回。findall()搜索整个字符串,返回匹配正则表达式的所有结果。

2. re.findall() 函数的使用方法

re.findall()函数的使用方法如下:

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

其中,参数说明如下:

  • pattern:定义一个正则表达式,用于匹配字符串。
  • string:需要匹配的字符串。
  • flags:可选参数,用于设置正则表达式的匹配模式。

返回结果为一个列表,列表中包含所有匹配到的结果。

3. 实例说明

接下来,我们将通过两个实例来介绍 re.findall() 函数的具体使用。

实例一:匹配所有数字

import re
text = "hello 123 world 456"
result = re.findall("\d+", text)
print(result)

运行结果为:[‘123’, ‘456’]

解释:\d+ 表示匹配一个或多个数字,加号 + 表示匹配一个或多个字符。

实例二:匹配网站中所有超链接

import re
text = '<a href="http://www.baidu.com">百度网站</a>,<a href="http://www.taobao.com">淘宝网站</a>。'
result = re.findall('<a href="(.*?)">(.*?)</a>', text)
print(result)

运行结果为:[(‘http://www.baidu.com’, ‘百度网站’), (‘http://www.taobao.com’, ‘淘宝网站’)]

解释:<a href="(.*?)">(.*?)</a> 表示匹配一个超链接,其中 (.*?) 表示匹配任意字符,非贪婪模式。使用两个括号捕获两个分组,分别表示链接和名称,且捕获时会去掉标签。最后返回匹配到的超链接和名称。