File tree Expand file tree Collapse file tree 1 file changed +7
-4
lines changed
Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change 3838# to -1
3939PCRE2_ZERO_TERMINATED = - 1
4040
41+ # PCRE2_UNSET is used for offsets of groups that didn't participate in a match
42+ # It's SIZE_MAX: 0xFFFFFFFF for 32bit, 0xFFFFFFFFFFFFFFFF for 64bit
43+ PCRE2_UNSET = (1 << (PCRE2_SIZE_SIZE * 8 )) - 1
44+
4145
4246IGNORECASE = I = 0x8
4347MULTILINE = M = 0x400
@@ -62,12 +66,11 @@ def group(self, *n):
6266 if not n :
6367 return self .s [self .offsets [0 ] : self .offsets [1 ]]
6468 if len (n ) == 1 :
65- return self .s [self .offsets [n [0 ] * 2 ] : self .offsets [n [0 ] * 2 + 1 ]]
66- return tuple (self .s [self .offsets [i * 2 ] : self .offsets [i * 2 + 1 ]] for i in n )
69+ return None if self . offsets [ n [ 0 ] * 2 ] == PCRE2_UNSET else self .s [self .offsets [n [0 ] * 2 ] : self .offsets [n [0 ] * 2 + 1 ]]
70+ return tuple (None if self . offsets [ i * 2 ] == PCRE2_UNSET else self .s [self .offsets [i * 2 ] : self .offsets [i * 2 + 1 ]] for i in n )
6771
6872 def groups (self , default = None ):
69- assert default is None
70- return tuple (self .group (i + 1 ) for i in range (self .num - 1 ))
73+ return tuple (default if self .offsets [(i + 1 ) * 2 ] == PCRE2_UNSET else self .group (i + 1 ) for i in range (self .num - 1 ))
7174
7275 def start (self , n = 0 ):
7376 return self .offsets [n * 2 ]
You can’t perform that action at this time.
0 commit comments