正则表达式:不在列表中 - Python

3

有没有办法让我在表达式中检查项目是否不在列表中。

我有一个单词列表的情况:

listA = ["Abc","Def","etc"]

我希望做的是在与正则表达式匹配的情况下,排除给定列表中的任何单词。我可以不使用正则表达式来实现这一点,但想知道Python是否有内置的方法来完成此操作。
例如:
names = ["David","John","Bob"]
x = "From John@email.com Sat Jan 5 09:14:16 2008"

y = re.findall([NOT in Names]+'\S+@\S+',x)

预期输出应该是一个空列表(因为它包含了John)。 如果上面的电子邮件是will@email.com,那么我希望输出是:
['will@email.com']

请问您能展示一下表达式和期望的输出吗? - thefourtheye
谢谢您的评论,我现在会添加进去。 - KingJohnno
1个回答

4
您可以这样做:
names = ["David","John","Bob"]
x = """From will@email.com Sat Jan 5 09:14:16 2008
       From mike@email.com Sat Jan 5 09:14:16 2008"""
y = [m[0] for m in re.findall('((\S+)@\S+)',x) if m[1] not in names]
-> ['will@email.com', 'mike@email.com']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接