与正则表达式匹配的负管道

Negative pipe matching with regular expressions

我有一个字符串,例如,"I will kill you today" 或类似名称。 我想匹配所有不是 'kill' 或 'will' 的单词。我相信否定字符 类 不会起作用,因为这是一个词。我看过负前瞻,但我不太知道如何使用它们。

换句话说,当我输入

"I will kill you today"

我要

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

当我通过 findall 方法时。

这里可以使用交替运算符

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

您似乎不需要为此使用正则表达式。只需 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']