@@ -77,6 +77,8 @@ def test_basic_re_sub(self):
77
77
self .assertTypedEqual (re .sub (b'y' , B (b'a' ), B (b'xyz' )), b'xaz' )
78
78
self .assertTypedEqual (re .sub (b'y' , bytearray (b'a' ), bytearray (b'xyz' )), b'xaz' )
79
79
self .assertTypedEqual (re .sub (b'y' , memoryview (b'a' ), memoryview (b'xyz' )), b'xaz' )
80
+ for y in ("\xe0 " , "\u0430 " , "\U0001d49c " ):
81
+ self .assertEqual (re .sub (y , 'a' , 'x%sz' % y ), 'xaz' )
80
82
81
83
self .assertEqual (re .sub ("(?i)b+" , "x" , "bbbb BBBB" ), 'x x' )
82
84
self .assertEqual (re .sub (r'\d+' , self .bump_num , '08.2 -2 23x99y' ),
@@ -250,6 +252,13 @@ def test_re_split(self):
250
252
[b'' , b'a' , b'b' , b'c' ])
251
253
self .assertTypedEqual (re .split (b"(:*)" , string ),
252
254
[b'' , b':' , b'a' , b':' , b'b' , b'::' , b'c' ])
255
+ for a , b , c in ("\xe0 \xdf \xe7 " , "\u0430 \u0431 \u0432 " ,
256
+ "\U0001d49c \U0001d49e \U0001d4b5 " ):
257
+ string = ":%s:%s::%s" % (a , b , c )
258
+ self .assertEqual (re .split (":" , string ), ['' , a , b , '' , c ])
259
+ self .assertEqual (re .split (":*" , string ), ['' , a , b , c ])
260
+ self .assertEqual (re .split ("(:*)" , string ),
261
+ ['' , ':' , a , ':' , b , '::' , c ])
253
262
254
263
self .assertEqual (re .split ("(?::*)" , ":a:b::c" ), ['' , 'a' , 'b' , 'c' ])
255
264
self .assertEqual (re .split ("(:)*" , ":a:b::c" ),
@@ -287,6 +296,14 @@ def test_re_findall(self):
287
296
[b":" , b"::" , b":::" ])
288
297
self .assertTypedEqual (re .findall (b"(:)(:*)" , string ),
289
298
[(b":" , b"" ), (b":" , b":" ), (b":" , b"::" )])
299
+ for x in ("\xe0 " , "\u0430 " , "\U0001d49c " ):
300
+ xx = x * 2
301
+ xxx = x * 3
302
+ string = "a%sb%sc%sd" % (x , xx , xxx )
303
+ self .assertEqual (re .findall ("%s+" % x , string ), [x , xx , xxx ])
304
+ self .assertEqual (re .findall ("(%s+)" % x , string ), [x , xx , xxx ])
305
+ self .assertEqual (re .findall ("(%s)(%s*)" % (x , x ), string ),
306
+ [(x , "" ), (x , x ), (x , xx )])
290
307
291
308
def test_bug_117612 (self ):
292
309
self .assertEqual (re .findall (r"(a|(b))" , "aba" ),
@@ -305,6 +322,12 @@ def test_re_match(self):
305
322
self .assertEqual (re .match (b'(a)' , string ).group (0 ), b'a' )
306
323
self .assertEqual (re .match (b'(a)' , string ).group (1 ), b'a' )
307
324
self .assertEqual (re .match (b'(a)' , string ).group (1 , 1 ), (b'a' , b'a' ))
325
+ for a in ("\xe0 " , "\u0430 " , "\U0001d49c " ):
326
+ self .assertEqual (re .match (a , a ).groups (), ())
327
+ self .assertEqual (re .match ('(%s)' % a , a ).groups (), (a ,))
328
+ self .assertEqual (re .match ('(%s)' % a , a ).group (0 ), a )
329
+ self .assertEqual (re .match ('(%s)' % a , a ).group (1 ), a )
330
+ self .assertEqual (re .match ('(%s)' % a , a ).group (1 , 1 ), (a , a ))
308
331
309
332
pat = re .compile ('((a)|(b))(c)?' )
310
333
self .assertEqual (pat .match ('a' ).groups (), ('a' , 'a' , None , None ))
0 commit comments