все Python 3reфункция
(?P<name>...)
группы
Именованная группа захвата. Позволяет обращаться к совпадению по имени через match.group('name') или match['name'] вместо числового индекса.
Синтаксис
(?P<name>pattern)
match.group('name')
match.groupdict()
Имя не отменяет нумерацию, а дополняет её: та же группа по-прежнему доступна как m.group(1), внутри шаблона — как обратная ссылка (?P=name), а в строке замены re.sub — как \g<name>. Имя должно быть валидным идентификатором и уникальным в пределах шаблона: два (?P<x>...) в одном регулярном выражении просто не скомпилируются. В groupdict() попадают только именованные группы, и у той, что не участвовала в совпадении, значение будет None, а не пустая строка.
Примеры
import re
pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.match(pattern, '2024-06-17')
print(m.group('year')) # 2024
print(m['month']) # 06
print(m.groupdict()) # {'year': '2024', 'month': '06', 'day': '17'}
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности