2014-05-08 3 views
4

У меня есть что-то вроде этого:питон регулярное выражение: получить имя именованной группы

$ pattern = re.compile('(?P<group1>AAA|BBB|CCC)|(?P<group2>DDD|EEE|FFF)') 

Если я смотрю на объект матча я не очень заинтересован какой конкретный текст был подобран, я просто хочу знать если он был group1 или group2

groupdict() дает мне что-то вроде этого:

$ match.groupdict() 
$ {'group1': None, 'group2': 'DDD'} 

Теперь, конечно, я мог бы узнать, что это group2, просто итерацию по Dict, но это кажется медленным, если Я есть много матчей для проверки. Есть ли более прямой способ получить название группы? (Python 2.7)

ответ

6

Возможно, lastgroup?

>>> pattern = re.compile('(?P<group1>AAA|BBB|CCC)|(?P<group2>DDD|EEE|FFF)') 
>>> m = pattern.search("AAA") 
>>> m.lastgroup 
'group1' 
>>> m = pattern.search("DDD") 
>>> m.lastgroup 
'group2' 
+0

Ну, я чувствую себя немного застенчивым по поводу моего вопроса сейчас, ответ выглядит просто для легкого х) Спасибо! – Eulelie

Смежные вопросы