Группы и обратные ссылки
Захват частей совпадения и повторные ссылки на них.
Сигнатура
(...) (?P<name>...) (?:...) \1 (?P=name)Скобки (...) создают захватывающую группу. Варианты:
(...)— нумерованная группа (\1,\2…);(?P<name>...)— именованная группа;(?:...)— группировка без захвата;\1или(?P=name)— обратная ссылка на ранее захваченный текст.
import re
# обратная ссылка: ищем удвоенное слово
m = re.search(r"(\w+) \1", "the the cat")
print(m.group()) # the the
# именованная группа
m = re.search(r"(?P<area>\d{3})-(?P<num>\d{4})", "495-1234")
print(m.group("area")) # 495