Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 由列表中的元素组成的正则表达式模式_Python_Regex - Fatal编程技术网

Python 由列表中的元素组成的正则表达式模式

Python 由列表中的元素组成的正则表达式模式,python,regex,Python,Regex,我试图创建一个脚本,按顺序读取list元素,并将它们连接到regex模式中 比如说, 我有这样一份清单: lst = ['B.', 'Article', 'III'] re.search(r lst[0]\s+lst[1]\s+lst[2]).group() 并且想要包含类似这样的正则表达式: lst = ['B.', 'Article', 'III'] re.search(r lst[0]\s+lst[1]\s+lst[2]).group() 因此,无论列表中每个元素之间是否有空格,它

我试图创建一个脚本,按顺序读取list元素,并将它们连接到regex模式中

比如说,

我有这样一份清单:

lst = ['B.', 'Article', 'III']
re.search(r lst[0]\s+lst[1]\s+lst[2]).group()
并且想要包含类似这样的正则表达式:

lst = ['B.', 'Article', 'III']
re.search(r lst[0]\s+lst[1]\s+lst[2]).group()
因此,无论列表中每个元素之间是否有空格,它都可以匹配以下内容:

candidate_1 = 'B.      Article III'
candidate_2 = 'B.        Article III'
试着这样做:

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')
试着这样做:

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

好啊我们祝你一切顺利luck@sshashank124thx我真的希望如此:你的问题是什么?@Robᵩ 我不知道如何将r与str连接起来。如果我执行r lst[0]\s+lst[1]\s+lst[2],则会返回错误,如果执行rlst[0]\s+lst[1]\s+lst[2],则肯定会返回errorOk。我们祝你一切顺利luck@sshashank124thx我真的希望如此:你的问题是什么?@Robᵩ 我不知道如何将r与str连接起来。如果我执行r lst[0]\s+lst[1]\s+lst[2],它会返回错误,如果执行rlst[0]\s+lst[1]\s+lst[2],它肯定会返回错误。我有一个更基本的问题。我尝试了type(list2pattern(lst)),它返回str,我的问题是,如果str和r str都被存储为str,那么机器如何区分它们?@delinco:str和r str是什么?啊,可能你的意思是
r”“
:。在表示正则表达式之前总是添加的rpattern@delinco-看这个问题:我有一个更基本的问题。我尝试了type(list2pattern(lst)),它返回str,我的问题是,如果str和r str都被存储为str,那么机器如何区分它们?@delinco:str和r str是什么?啊,可能你的意思是
r”“
:。在表示正则表达式之前总是添加的rpattern@delinco-见这一问题: