re.findall()
re.findall()
函数返回所有非重叠匹配的列表。它只包含匹配的子串,不包含任何关于匹配位置的信息。
import re
text = "Hello, world! This is a test."
pattern = r"\w+" # 匹配一个或多个单词字符
matches = re.findall(pattern, text)
print(matches) # 输出: ['Hello', 'world', 'This', 'is', 'a', 'test']
re.finditer()
re.finditer()
函数返回一个迭代器,其中包含所有非重叠匹配的匹配对象。
使用 re.finditer()
可以访问到每个匹配项的更多信息,而不仅仅是匹配的子串本身。如果需要知道匹配项在字符串中的位置,或者需要对匹配项进行更复杂的处理,可用re.finditer()
。
import re
text = "Hello, world! This is a test."
pattern = r"\w+" # 匹配一个或多个单词字符
matches = re.finditer(pattern, text)
for match in matches:
print(match.group()) # 输出匹配的子串
print(match.start()) # 输出匹配的起始位置
print(match.end()) # 输出匹配的结束位置(不包括结束位置的字符)
print(match.span()) # 输出一个包含起始和结束位置的元组
re.findall()
返回所有匹配的子串的列表,不包含位置信息。re.finditer()
返回一个迭代器,其中包含匹配对象,每个对象都有关于匹配项(包括位置)的详细信息。
如果只需要匹配的子串, re.findall()
更加简单和直接;如果需要更多关于匹配项的信息(如位置),可选择使用re.finditer()
。