@@ -66,41 +66,50 @@ def __init__(self, pattern, pos, endpos, result):
66
66
def end (self , groupnum = 0 ):
67
67
return self .result .end [groupnum ]
68
68
69
- def _groupidx (self , idx ):
70
- if isinstance (idx , str ):
71
- return self .compiled_regex .groups [idx ]
72
- else :
73
- return idx
74
-
75
69
def group (self , * args ):
76
70
if not args :
77
- return self .result . input [ self . result . start [ 0 ]: self . result . end [ 0 ]]
71
+ return self .__group__ ( 0 )
78
72
elif len (args ) == 1 :
79
- idxarg = self ._groupidx (args [0 ])
80
- return self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]]
73
+ return self .__group__ (args [0 ])
81
74
else :
82
75
lst = []
83
76
for arg in args :
84
- idxarg = self ._groupidx (arg )
85
- lst .append (self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]])
77
+ lst .append (self .__group__ (arg ))
86
78
return tuple (lst )
87
79
88
80
def groups (self , default = None ):
89
81
lst = []
90
82
for arg in range (1 , self .result .groupCount ):
91
- idxarg = self ._groupidx (arg )
92
- lst .append (self .result .input [self .result .start [idxarg ]:self .result .end [idxarg ]])
83
+ lst .append (self .__group__ (arg ))
93
84
return tuple (lst )
94
85
86
+ def __groupidx__ (self , idx ):
87
+ if isinstance (idx , str ):
88
+ return self .compiled_regex .groups [idx ]
89
+ else :
90
+ return idx
91
+
92
+ def __group__ (self , idx ):
93
+ idxarg = self .__groupidx__ (idx )
94
+ start = self .result .start [idxarg ]
95
+ if start < 0 :
96
+ return None
97
+ else :
98
+ return self .result .input [start :self .result .end [idxarg ]]
99
+
95
100
def groupdict (self , default = None ):
96
- return self .compiled_regex .groups
101
+ d = {}
102
+ for k in self .compiled_regex .groups :
103
+ idx = self .compiled_regex .groups [k ]
104
+ d [k ] = self .__group__ (idx )
105
+ return d
97
106
98
107
def span (self , groupnum = 0 ):
99
- idxarg = self ._groupidx (groupnum )
108
+ idxarg = self .__groupidx__ (groupnum )
100
109
return (self .result .start [idxarg ], self .result .end [idxarg ])
101
110
102
111
def start (self , groupnum = 0 ):
103
- idxarg = self ._groupidx (groupnum )
112
+ idxarg = self .__groupidx__ (groupnum )
104
113
return self .result .start [idxarg ]
105
114
106
115
@property
0 commit comments