包含列表中元素的正则表达式模式

时间:2018-02-21 06:56:25

标签: python regex

我正在尝试创建一个顺序读取列表元素的脚本,并将它们连接成正则表达式模式。

例如,

我有一个这样的清单:

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'

1 个答案:

答案 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')