Возможно ли получить все возможные разборы из регулярного выражения в 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
во второй раз?