Получение всех альтернативных разборов с регулярным выражением - PullRequest
0 голосов
/ 21 января 2019

Возможно ли получить все возможные разборы из регулярного выражения в Python? Или это можно сделать только с несколькими выражениями?

Например, я знаю, что

print [m.groupdict() for m in re.finditer('^a(?P<first_group>bc)$', 'abc')]

дает

[{u'first_group': u'bc'}]

и

print [m.groupdict() for m in re.finditer('^a(?P<second_group>b).*$', 'abc')]

выход

[{u'second_group': u'b'}]

Я хотел бы применить регулярное выражение только один раз и найти все разборы за один проход. Однако, когда я пытаюсь объединить выражения

print [m.groupdict() for m in re.finditer('^(?:a(?P<first_group>bc)|a(?P<second_group>b).*)$', 'abc')]

это дает мне только один разбор:

[{u'second_group': None, u'first_group': u'bc'}]

Можно ли также извлечь совпадение {u'second_group': 'b', u'first_group': None}, не применяя re во второй раз?

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