正则表达式:在python3中的列表中搜索

时间:2019-03-01 16:51:59

标签: python regex python-3.x list

我有一个字符串列表。

考虑以下代码:

import re
mylist = ["http://abc/12345?abc", "https://abc/abc/2516423120?$abc$"]
r = re.compile("(\d{3,})")

result0 = list(filter(r.findall, mylist))  # Note 1
print(result0)

result1 = r.findall(mylist[0])
result2 = r.findall(mylist[1])
print(result1, result2)

结果是:

['http://abc/12345?abc', 'https://abc/abc/2516423120?$abc$']

['12345'] ['2516423120']

为什么我们得到的结果有所不同?

Code snippet

1 个答案:

答案 0 :(得分:1)

我不确定您希望filter做什么,但是这样做是因为它返回x的所有mylist元素bool(r.findall(x))的迭代器}是False。仅当r.findall(x)返回一个空列表时,即正则表达式与字符串不匹配,因此这里result0包含与mylist相同的值。