Python 的 re 模块是一个处理正则表达式的库,在使用时需要导入该库,可以通过该库提供的 finditer.ASCII() 函数,找到字符串中与正则表达式匹配的所有子串,这个函数的作用是返回一个迭代器,迭代器中包含了每次匹配的结果。
函数声明如下:
re.finditer(pattern, string, flags=0)
参数说明:
pattern
:正则表达式模式字符串。string
:需要匹配的字符串。flags
:可选,标志参数。
下面提供两个实例说明该函数的使用方法:
- 查找字符串中所有满足条件的子串。
假设有一个字符串 str,需要查找其中所有字符 ‘a’ 和 ‘e’ 的位置。代码示例如下:
import re
str = 'The quick brown fox jumps over the lazy dog.'
patterns = ['a', 'e']
for pat in patterns:
it = re.finditer(pat, str)
print(f'Pattern: {pat}')
for match in it:
print(f' found at {match.start()}')
输出结果为:
Pattern: a
found at 1
found at 34
Pattern: e
found at 9
found at 20
found at 25
found at 28
found at 32
found at 40
- 使用 re.ASCII 模式查找带有特殊字符的子串。
假设有一个字符串 str,其中包含有多个特殊字符(如 ‘$’、’.’、’\’ 等),需要查找其中包含这些特殊字符的子串。由于正则表达式在处理这些特殊字符时会产生一些不同寻常的结果,因此可以使用 re.ASCII 模式保证正则表达式只会匹配 ASCII 字符集中的字符。代码示例如下:
import re
str = 'The $100 prize and the runner-up prize.'
pat = re.compile('[a-zA-Z]+\$[0-9]+')
it = re.finditer(pat, str, flags=re.ASCII)
for match in it:
print(f' found: {match.group()}')
输出结果为:
found: The $100