【问题标题】:Regex: Not in a List - Python正则表达式:不在列表中 - Python
【发布时间】:2014-03-02 17:28:07
【问题描述】:

有没有一种方法可以让我在表达式中包含检查项目是否不在列表中的能力。

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

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)

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

['will@email.com']

【问题讨论】:

  • 你能显示表达式和预期的输出吗?
  • 感谢您的评论,我现在添加它。

标签: python regex regex-negation


【解决方案1】:

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 2016-09-27
    • 1970-01-01
    • 2023-03-25
    • 2021-02-09
    • 2010-09-12
    • 2011-08-06
    • 2013-02-07
    • 2020-10-15
    相关资源
    最近更新 更多