我正在尝试创建一个顺序读取列表元素的脚本,并将它们连接成正则表达式模式。
例如,
我有一个这样的清单:
lst = ['B.', 'Article', 'III']
并希望包含这样的正则表达式:
re.search(r lst[0]\s+lst[1]\s+lst[2]).group()
以便它可以在下面匹配,而不管列表中每个元素之间的white_space:
candidate_1 = 'B. Article III'
candidate_2 = 'B. Article III'
答案 0 :(得分:3)
尝试str.join()
,如下所示:
r'\s+'.join(lst)
这是一个完整的程序:
import re
def list2pattern(l):
return r'\s+'.join(l)
lst = ['B.', 'Article', 'III']
assert re.search(list2pattern(lst), 'B. Article III')
assert re.search(list2pattern(lst), 'B. Article III')
assert not re.search(list2pattern(lst), 'B.Article III')
assert not re.search(list2pattern(lst), 'George')