Соответствие позиции запроса выражения регулярного выражения

Я пытаюсь сопоставить строку с выражением регулярного выражения ниже. В 11-м семестре я хотел бы, чтобы 11-й символ был таким же, как и у 1-го символа, а 12-й символ был таким же, как у 2-го символа в Python 3. Я пробовал \1\2, как указано на hackerrank, но выдает ошибку при запуске кода.

  strcom = 'ab #1?AZa$ab #1?AZa$'
  match = re.findall(r'[a-z]\w\s\W\d\D[A-Z][a-zA-Z][aeiouAEIOU]\S\1\2',strcom)

1 ответ

Вам нужно добавить группы захвата, как предлагает Onyambu, но чтобы получить соответствие, вы должны использовать re.finditer (если вы ожидаете несколько совпадений) или re.search найти единственное совпадение (или re.match если вы ожидаете только одно совпадение в начале строки).

import re
strcom = 'ab #1?AZa$ab #1?AZa$'
for m in re.finditer(r'([a-z])(\w)\s\W\d\D[A-Z][a-zA-Z][aeiouAEIOU]\S\1\2', strcom):
    print(m.group())

# => ab #1?AZa$ab

Посмотреть демо Python

Проблема с re.findall является то, что он только возвратит захваченные подстроки, если группы захвата определены в образце.

Другие вопросы по тегам