Соответствие позиции запроса выражения регулярного выражения
Я пытаюсь сопоставить строку с выражением регулярного выражения ниже. В 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
является то, что он только возвратит захваченные подстроки, если группы захвата определены в образце.