Python Glossary English

все 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Сообщить о неточности