Har*_*ila 7 python regex python-2.7
我认为这是一项简单的任务,但我是 regex 的新手,所以无法弄清楚。我想过滤一个包含以下内容的列表:“ANY”-“ANY”-“ANY”
输入:
List1 = ["AB.22-01-01", "AB.33-01-44", "--4", "AA.44--05", "--"]
Run Code Online (Sandbox Code Playgroud)
输出:
List2 = ["AB.22-01-01", "AB.33-01-44"]
Run Code Online (Sandbox Code Playgroud)
每个项目将包含两个“-”,但我只想获取“-”两侧带有文本的项目。
Eri*_*ire 21
使用re 模块试试这个:
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) ]
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式。它将返回所有不包含的元素--
>>> import re
>>> pat = re.compile(r'^((?!--).)*$')
>>> [i for i in List1 if pat.match(i)]
['AB.22-01-01', 'AB.33-01-44']
Run Code Online (Sandbox Code Playgroud)