列出要执行正则表达式的comprenehsion

时间:2017-07-20 17:01:06

标签: python list

我不知道这有什么问题。我有一个项目清单:

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

结果:

     

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

但似乎不起作用。

1 个答案:

答案 0 :(得分:1)

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

regex="xe-%s/1/*" %i

[x for x in numbers if re.match(regex,x)]

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