Skip to main content
 首页 » 编程设计

python之获取要执行的正则表达式的列表理解

2025年02月15日30leader

我不知道这是怎么回事。我有一个项目列表:

int=['xe-0/1/1', 'xe-0/1/2', 'xe-0/1/3', 'xe-0/2/2', 'xe-0/2/3', 'xe-0/3/1', 'xe-1/0/2', 'xe-1/0/3', 'xe-1/1/1', 'xe-1/1/2', 'xe-1/2/2', 'xe-1/2/3', 'xe-1/3/1', 'xe-1/3/2', 'xe-2/0/2', 'xe-2/0/3', 'xe-2/1/1', 'xe-2/1/2', 'xe-2/1/3', 'xe-2/2/2', 'xe-2/2/3', 'xe-2/3/1', 'xe-2/3/2', 'xe-3/0/2', 'xe-3/0/3', 'xe-3/1/2', 'xe-3/1/3', 'xe-3/2/1', 'xe-3/2/2', 'xe-3/2/3', 'xe-3/3/2', 'xe-4/0/2', 'xe-4/0/3', 'xe-4/1/2', 'xe-4/1/3', 'xe-4/2/2', 'xe-4/2/3', 'xe-4/3/2', 'xe-4/3/3', 'xe-7/3/3', 'xe-8/0/7', 'xe-8/3/6', 'xe-8/3/7', 'xe-9/0/5', 'xe-9/0/6', 'xe-9/0/7', 'xe-9/1/5', 'xe-9/1/6', 'xe-10/0/4', 'xe-10/0/6', 'xe-10/0/7', 'xe-10/1/6', 'xe-10/2/4', 'xe-10/2/6', 'xe-10/2/7', 'xe-10/3/7', 'xe-11/0/6', 'xe-11/0/7', 'xe-11/1/6', 'xe-11/1/7', 'xe-11/2/6', 'xe-11/2/7', 'xe-11/3/6', 'xe-11/3/7'] 

我想迭代此列表并获得两个新列表,其中仅包含我在正则表达式中定义的匹配项。

for i in range(2): 
    regex="xe-%s/1/*" %i 
    print regex 
    [x for x in int if re.match(r'regex',x)] 

Result:

xe-0/1/* [] xe-1/1/* []

但是好像不行。

请您参考如下方法:

我相信您希望表达式存储在 regex 中,而不是字符串“regex”:

regex="xe-%s/1/*" %i 
 
[x for x in numbers if re.match(regex,x)] 

请注意变量名 int 必须更改为其他名称,在本例中为 numbers,因为 int 是内置函数并会在代码运行时抛出错误。