#python #regex
#python #регулярное выражение
Вопрос:
Я ищу что-то подобное r"[^1]"
в Python. Например, я хочу сопоставить такие слова, как «привет», в тексте, где каждая буква была заменена другой (например: «a» на «z«, «b» на «r«, …). «привет» может быть «zcuuj», «prvva», … Я хочу сказать Python: «найди мне слово, которое начинается с [a-z]
, затем букву, не похожую на первую, затем те же две буквы, затем букву, которая отличается от остальных.
Я пробовал этот шаблон:
r"([a-z])([^1])([^12]){2}([^123])"
(не работает)
Этот:
r"([a-z])((?!1))((?!1|2)){2}((?!1|2|3])"
(не работает)
Комментарии:
1. Что не работает? Какую ошибку вы получаете?
Ответ №1:
Попробуйте это здесь
^([a-z])(?!1)([a-z])(?!(?:1|2))(([a-z])4)(?!(?:1|2|4))[a-z]
Я протестировал его онлайн здесь, на rubular
Проблема с вашим вторым примером заключается в том, что отрицательное прогнозное утверждение не потребляет. Это означает, что вам нужно использовать символы после того, как вы их проверили. Я делаю это здесь после каждого просмотра с .
и ссылками.
Проблема с вашим первым примером заключается в том, что вы не можете поместить эти ссылки в группы символов.
ОБНОВЛЕНИЕ: Я обновил свое регулярное выражение и ссылку rubular, потому что в первой версии разрешались другие символы, чем [a-z]
после первого.
Ответ №2:
Согласно документации, которую вы можете использовать (?P<name>...)
для создания именованной группы, на которую вы можете позже ссылаться с помощью (?P=name)
.