Я ищу что-то вроде r"[^\1]"
в Python.
Например, я хочу совместить слова типа "привет" в тексте, где каждая буква была заменена на другую (например: "a" на "z", "b" на "r",...). "привет" может быть "zcuuj", "prvva",... Я хочу сказать Python: "Найдите мне слово, которое начинается с [a-z]
, а затем письмо, которое не, как сначала те же две буквы, затем письмо, которое отличается от других.
Я пробовал этот шаблон:
r"([a-z])([^\1])([^\1\2]){2}([^\1\2\3])"
(не работает)
Этот:
r"([a-z])((?!\1))((?!\1|\2)){2}((?!\1|\2|\3])"
(не работает)
Попробуйте здесь
^([a-z])(?!\1)([a-z])(?!(?:\1|\2))(([a-z])\4)(?!(?:\1|\2|\4))[a-z]
Я тестировал его онлайн здесь, на рублевом
Проблема с вашим вторым примером заключается в том, что отрицательное выражение ожидания не потребляет. Это означает, что вам нужно будет использовать символы после их проверки. Я делаю это здесь после каждого взгляда с помощью .
и ссылок.
Проблема с вашим первым примером заключается в том, что вы не можете помещать эти ссылки в группы символов.
UPDATE. Я обновил мое регулярное выражение и рублевую ссылку, потому что первая версия позволила другим символам, чем [a-z]
после первого.
В соответствии с документацией вы можете использовать (?P<name>...)
для создания именованной группы, которую позже можете использовать с помощью (?P=name)
.