Я должен сопоставить все буквенно-цифровые слова из текста.
>>> import re
>>> text = "hello world!! how are you?"
>>> final_list = re.findall(r"[a-zA-Z0-9]+", text)
>>> final_list
['hello', 'world', 'how', 'are', 'you']
>>>
Это хорошо, но, кроме того, у меня есть несколько слов, чтобы отрицать, то есть слова, которые не должны быть в моем окончательном списке.
>>> negate_words = ['world', 'other', 'words']
Плохой способ сделать это
>>> negate_str = '|'.join(negate_words)
>>> filter(lambda x: not re.match(negate_str, x), final_list)
['hello', 'how', 'are', 'you']
Но я могу сохранить цикл, если мой самый первый шаблон регулярных выражений может быть изменен, чтобы учесть отрицание этих слов. Я обнаружил отрицание символов, но у меня есть слова для отрицания, также я нашел regex-lookbehind в других вопросах, но это тоже не помогает.
Можно ли это сделать с помощью python re?
Обновление
Мой текст может занимать несколько строк. Кроме того, список negate_words может быть слишком длинным.
Учитывая это, использует регулярное выражение для такой задачи, исправить в первую очередь ?? Любые предложения ??