Как сопоставить слово, которое не начинается с X, но заканчивается на Y с помощью регулярного выражения - PullRequest
1 голос
/ 21 июня 2010

Пример;

X=This
Y=That

не соответствует;

ThisWordShouldNotMatchThat
ThisWordShouldNotMatch
WordShouldNotMatch

соответствует;

AWordShouldMatchThat

Iпробовал (?<!...), но, кажется, не легко:)

1 Ответ

12 голосов
/ 21 июня 2010
^(?!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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...