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

1

Пример

X=This
Y=That

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

ThisWordShouldNotMatchThat
ThisWordShouldNotMatch
WordShouldNotMatch

соответствия;

AWordShouldMatchThat

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

  • 3
    Какой язык вы используете?
  • 0
    Вы имеете в виду слово, как последовательность букв?
Показать ещё 1 комментарий
Теги:

1 ответ

12
Лучший ответ
^(?!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 - это будет соответствовать любому, что не является пробелом.

В Python вы можете сделать words = re.findall(r"\b(?!This)\w*That\b", text).

  • 0
    +1 - просто и точно
  • 0
    Я ценю вашу честную критику без умных комментариев. Я конечно сейчас кланяюсь.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню