Python 中的 re
模块是正则表达式操作库,提供了正则表达式的基本操作函数,例如 findall
、search
、sub
等等,它们允许我们在字符串中进行模式匹配、替换等操作。其中,finditer
函数是 re
模块中的一个函数,用于在字符串中匹配符合给定正则表达式的所有子串,并返回一个迭代器。在本篇攻略中,我们将详细讲解 finditer
函数的作用、使用方法以及两个实例说明。
作用
finditer
函数用于在字符串中匹配符合给定正则表达式的所有子串,并返回一个迭代器。这个迭代器包含了每一个匹配成果,并且每一个成果都是一个 match 对象。
使用方法
finditer
函数的语法如下:
re.finditer(pattern, string, flags=0)
pattern
:正则表达式模式string
:要匹配的字符串flags
:可选参数,用于控制正则表达式的匹配方式,如是否区分大小写等
下面我们通过两个实例来演示 finditer
函数的使用。
实例说明
实例一
假设我们需要找到一个字符串中所有连续的数字子串,并将其转化为整数。我们可以使用 finditer
函数实现。
import re
s = 'abc12de45fg789hij34'
# 使用 re.compile 函数将正则表达式编译,加快匹配速度
pattern = re.compile(r'\d+')
# 使用 finditer 函数查找匹配的结果
matches = pattern.finditer(s)
# 遍历匹配结果,取出每个匹配成功的子串,将其转化为整数
for match in matches:
num = int(match.group())
print(num)
输出结果:
12
45
789
34
实例二
假设我们需要找到一个 HTML 文本中所有链接的 URL,并打印出来。我们同样可以使用 finditer
函数实现。
import re
html = '''
<html>
<head><title>Sample HTML Page</title></head>
<body>
<h1>This is a sample HTML page</h1>
<p>Welcome to the <a href="http://www.google.com">Google</a> homepage</p>
<p>Here are some other useful links:</p>
<ul>
<li><a href="http://www.python.org">Python Homepage</a></li>
<li><a href="http://www.github.com">Github</a></li>
</ul>
</body>
</html>
'''
# 使用正则表达式找到所有链接的 URL
pattern = re.compile(r'<a.*?href="(.*?)".*?>')
matches = pattern.finditer(html)
# 遍历匹配结果,取出链接的 URL,并打印出来
for match in matches:
url = match.group(1)
print(url)
输出结果:
http://www.google.com
http://www.python.org
http://www.github.com
通过上面的实例,我们能够初步了解到 finditer
函数的使用方法,以及该函数在正则表达式匹配中的重要作用。