@@ -58,35 +58,50 @@ def TREGEX_ENGINE(*args): raise e
5858class SRE_Match ():
5959 def __init__ (self , pattern , pos , endpos , result ):
6060 self .result = result
61+ self .compiled_regex = result .regex
6162 self .re = pattern
6263 self .pos = pos
6364 self .endpos = endpos
6465
6566 def end (self , groupnum = 0 ):
6667 return self .result .end [groupnum ]
6768
69+ def _groupidx (self , idx ):
70+ if isinstance (idx , str ):
71+ return self .compiled_regex .groups [idx ]
72+ else :
73+ return idx
74+
6875 def group (self , * args ):
6976 if not args :
7077 return self .result .input [self .result .start [0 ]:self .result .end [0 ]]
7178 elif len (args ) == 1 :
72- return self .result .input [self .result .start [args [0 ]]:self .result .end [args [0 ]]]
79+ idxarg = self ._groupidx (args [0 ])
80+ return self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]]
7381 else :
7482 lst = []
7583 for arg in args :
76- lst .append (self .result .input [self .result .start [arg ]:self .result .end [arg ]])
84+ idxarg = self ._groupidx (arg )
85+ lst .append (self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]])
7786 return tuple (lst )
7887
7988 def groups (self , default = None ):
8089 lst = []
8190 for arg in range (1 , self .result .groupCount ):
82- lst .append (self .result .input [self .result .start [arg ]:self .result .end [arg ]])
91+ idxarg = self ._groupidx (arg )
92+ lst .append (self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]])
8393 return tuple (lst )
8494
95+ def groupdict (self , default = None ):
96+ return self .compiled_regex .groups
97+
8598 def span (self , groupnum = 0 ):
86- return (self .result .start [groupnum ], self .result .end [groupnum ])
99+ idxarg = self ._groupidx (groupnum )
100+ return (self .result .start [idxarg ], self .result .end [idxarg ])
87101
88102 def start (self , groupnum = 0 ):
89- return self .result .start [groupnum ]
103+ idxarg = self ._groupidx (groupnum )
104+ return self .result .start [idxarg ]
90105
91106 @property
92107 def string (self ):
0 commit comments