Я новичок и потратил немало времени на это. Я частично смог его решить.
Проблема: я хочу, чтобы игнорировать все слова, которые имеют либо или. the
The
Например, atheist, others, The, the
будут исключены. Тем не менее, hottie
не следует включать, потому the
это не происходит внутри слова как целое слово.
Я использую Python re
engine.
Здесь мое регулярное выражение:
\b - Start at word boundary
(?! - Negative lookahead to avoid starting with the or The
[t|T]he - the and The
)
\w+ - Other letters are fine
(?<! - Negative look behind
[t|T]he - the or The shouldn't occur before \w+
)
\b - Word boundary
Ожидаемый результат для данного ввода:
Input: Atheist Others Their Hello the The bathe hottie tahaie theater
Expected Output: Hello hottie tahaie
Как можно видеть в regex101, я могу исключить большинство слов, кроме таких слов, как atheist
--т.е. случаи, когда the or The
Я" появляются внутри слов. Я искал это на SO и нашел некоторые потоки, такие как Как исключить определенную строку с помощью regex в Python? , но они, похоже, не имеют прямого отношения к тому, что я пытаюсь сделать.
Любая помощь будет оценена.
Обратите внимание, что я заинтересован в решении этой проблемы только с помощью регулярного выражения. Я не ищу решения, использующие манипуляции с строкой python.
Этот подход проще, чем исходное регулярное выражение:
\b(?!\w*[t|T]he)\w+\b
Мы подбираем слова, но убедитесь, что нет в слове, используя "мягкий" негативный предпросмотр. the
Ваш оригинальный подход запрещен только в передней или задней части слова, как это позволило без заполнения после/до границы слова. the
(?![tT]he)
только текущей позиции, а (?:\w*[tT]he)
позволяет совпадению перейти от текущей позиции, так как \w*
может использоваться как наполнитель.
\w*
с tThe
? Я не получил эту часть. Кроме того, почему слова, оканчивающиеся the
(например, ванна), игнорируются?
the
|
в[t|T]