^(?!This).*That$
В качестве регулярного выражения в свободном интервале:
^ # Start of string
(?!This) # Assert that "This" can't be matched here
.* # Match the rest of the string
That # making sure we match "That"
$ # right at the end of the string
Это будет соответствовать одному слову, которое соответствует вашим критериям, но только если это слово является единственным входом в регулярное выражение.Если вам нужно найти слова внутри строки из многих других слов, тогда используйте
\b(?!This)\w*That\b
\b
- это привязка к границе слова, поэтому она совпадает в начале и в конце слова.\w
означает «буквенно-цифровой символ. Если вы также хотите, чтобы не-буквенно-цифровые символы были частью вашего слова, вместо этого используйте \S
- это будет соответствовать всему, что не является пробелом.Вы могли бы сделать words = re.findall(r"\b(?!This)\w*That\b", text)
.