使用正则表达式过滤列表

时间:2015-11-27 15:17:03

标签: python regex python-2.7

我认为这是一项简单的任务,但我是正则表达式的新手,所以无法弄明白。我想过滤包含以下内容的列表:“ANY” - “ANY” - “ANY”

输入:

List1 = ["AB.22-01-01", "AB.33-01-44", "--4", "AA.44--05", "--"]

输出:

List2 = ["AB.22-01-01", "AB.33-01-44"]

每个项目都包含两个“ - ”,但我只想在“ - ”的每一边都有文字。

2 个答案:

答案 0 :(得分:4)

使用re module

尝试此操作
import re

p = re.compile('^.+-.+-.+$')
l1 = ["AB.22-01-01", "AB.33-01-44", "--4", "AA.44--05", "--"]
l2 = [ s for s in l1 if p.match(s) ]

答案 1 :(得分:1)

您可以使用正则表达式。它将返回不包含--

的所有元素
>>> import re
>>> pat = re.compile(r'^((?!--).)*$')
>>> [i for i in List1 if pat.match(i)]
['AB.22-01-01', 'AB.33-01-44']

Demo