试图理解re.search()vs re.findall()

时间:2018-03-10 23:00:38

标签: python regex

我正在尝试在学习正则表达式时理解一个看似简单的案例。

假设我有这样的代码:

import re

a = "Eventin queue contains 5 elements, first element is 20 minutes old"
b = re.search(r"Eventin queue contains \d+ elements, first element is \d+ minutes old", a)
print(b)

出于某种原因,b仅返回此结果:<_sre.SRE_Match object; span=(0, 66), match='Eventin queue contains 5 elements, first element >

正如您所看到的,这不是我期待的完整结果。但是,如果我使用re.findall(),我会获得['Eventin queue contains 5 elements, first element is 20 minutes old']

我在这里误解了什么吗? re.search()不应该返回完整匹配吗?

1 个答案:

答案 0 :(得分:2)

方法re.findall返回匹配的子字符串列表,但方法re.search返回match个对象,您可以像这样恢复完整匹配的子字符串。

b.group() # 'Eventin queue contains 5 elements, first element is 20 minutes old'

您所看到的内容<_sre.SRE_Match object; span=(0, 66), match='Eventin queue contains 5 elements, first element >仅代表该对象。