Каково последнее совпадение регулярного выражения с групповыми ссылками (в регулярном выражении Python)? - PullRequest
0 голосов
/ 13 сентября 2018

group должен дать последнее совпадение группы регулярного выражения, в то время как модуль регулярных выражений Python также предоставляет captures для получения всех совпадений.При использовании group для группы с ссылкой на группу последнее совпадение только названной группы возвращается group, игнорируя совпадения ссылок возвращается captures:

>>> import regex
>>> m = regex.fullmatch('(?P<x>.)*(?&x)', 'abc')
>>> m.captures('x')
['a', 'b', 'c']      # all matches, both of x and &x
>>> m.group('x')
'b'                  # last match only of matches of x, ignoring &x

Без ссылки, просто копирование именованной группы, она работает как положено:

>>> m = regex.fullmatch('(?P<x>.)(?P<x>.)(?P<x>.)', 'abc')
>>> m.captures('x')
['a', 'b', 'c']
>>> m.group('x')
'c'                  # last match of all three matches

Кто-нибудь знает, является ли это предполагаемым поведением илиможет быть ошибка?И если задумано, почему это так?Предоставляет ли объект сопоставления какую-либо информацию о том, к какой части регулярного выражения относится совпадение, к указанной группе или к ссылке?

Я использую регулярное выражение 2018.8.29, Python 3.6.5 и opensuse 15.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...