与正则表达式匹配的负管道
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']
我有一个字符串,例如,"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']