Как использовать дополнение группы в Python?

1

Я ищу что-то вроде 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])"

(не работает)

  • 0
    Что не работает? Какую ошибку вы получаете?
Теги:

2 ответа

1

Попробуйте здесь

^([a-z])(?!\1)([a-z])(?!(?:\1|\2))(([a-z])\4)(?!(?:\1|\2|\4))[a-z]

Я тестировал его онлайн здесь, на рублевом

Проблема с вашим вторым примером заключается в том, что отрицательное выражение ожидания не потребляет. Это означает, что вам нужно будет использовать символы после их проверки. Я делаю это здесь после каждого взгляда с помощью . и ссылок.

Проблема с вашим первым примером заключается в том, что вы не можете помещать эти ссылки в группы символов.

UPDATE. Я обновил мое регулярное выражение и рублевую ссылку, потому что первая версия позволила другим символам, чем [a-z] после первого.

0

В соответствии с документацией вы можете использовать (?P<name>...) для создания именованной группы, которую позже можете использовать с помощью (?P=name).

Ещё вопросы

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