负管道与正则表达式匹配

时间:2015-11-21 01:46:56

标签: python regex regex-negation

我有一个叫做"I will kill you today"之类的字符串,或类似的东西。 我希望匹配所有不是' kill'或者'将'我相信负面角色类不会起作用,因为这是一个单词。我看过负面的前瞻,但我不太清楚如何使用它们。

换句话说,当我输入

"I will kill you today"

我想要

['I', 'you', 'today']

当我通过findall方法时。

2 个答案:

答案 0 :(得分:0)

您可以在这里使用交替运算符。

re.findall(r'\b(?:[kw]ill)\b|\b(\w+)\b', s)

示例:

>>> import re
>>> s = "I will kill you today"
>>> [i for i in re.findall(r'\b(?:[kw]ill)\b|\b(\w+)\b', s) if i]
['I', 'you', 'today']

答案 1 :(得分:0)

似乎你不需要正则表达式。只需split()字符串并过滤掉您不感兴趣的字词:

s = "I will kill you today"
result = [word for word in s.split() if word.lower() not in ('kill', 'will')]

结果:

>>> result
['I', 'you', 'today']