self.assertTrue(re.match(br'[19a]', b'a', re.I))
self.assertTrue(re.match(br'[19a]', b'A', re.I))
self.assertTrue(re.match(br'[19A]', b'a', re.I))
+ self.assertTrue(re.match(r'[19\xc7]', '\xc7', re.I))
+ self.assertTrue(re.match(r'[19\xc7]', '\xe7', re.I))
+ self.assertTrue(re.match(r'[19\xe7]', '\xc7', re.I))
+ self.assertTrue(re.match(r'[19\xe7]', '\xe7', re.I))
+ self.assertTrue(re.match(r'[19\u0400]', '\u0400', re.I))
+ self.assertTrue(re.match(r'[19\u0400]', '\u0450', re.I))
+ self.assertTrue(re.match(r'[19\u0450]', '\u0400', re.I))
+ self.assertTrue(re.match(r'[19\u0450]', '\u0450', re.I))
+ self.assertTrue(re.match(r'[19\U00010400]', '\U00010400', re.I))
+ self.assertTrue(re.match(r'[19\U00010400]', '\U00010428', re.I))
+ self.assertTrue(re.match(r'[19\U00010428]', '\U00010400', re.I))
+ self.assertTrue(re.match(r'[19\U00010428]', '\U00010428', re.I))
+
+ self.assertTrue(re.match(br'[19A]', b'A', re.I))
+ self.assertTrue(re.match(br'[19a]', b'a', re.I))
+ self.assertTrue(re.match(br'[19a]', b'A', re.I))
+ self.assertTrue(re.match(br'[19A]', b'a', re.I))
+ self.assertTrue(re.match(r'[19A]', 'A', re.I|re.A))
+ self.assertTrue(re.match(r'[19a]', 'a', re.I|re.A))
+ self.assertTrue(re.match(r'[19a]', 'A', re.I|re.A))
+ self.assertTrue(re.match(r'[19A]', 'a', re.I|re.A))
+ self.assertTrue(re.match(r'[19\xc7]', '\xc7', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\xc7]', '\xe7', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\xe7]', '\xc7', re.I|re.A))
+ self.assertTrue(re.match(r'[19\xe7]', '\xe7', re.I|re.A))
+ self.assertTrue(re.match(r'[19\u0400]', '\u0400', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\u0400]', '\u0450', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\u0450]', '\u0400', re.I|re.A))
+ self.assertTrue(re.match(r'[19\u0450]', '\u0450', re.I|re.A))
+ self.assertTrue(re.match(r'[19\U00010400]', '\U00010400', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\U00010400]', '\U00010428', re.I|re.A))
+ self.assertIsNone(re.match(r'[19\U00010428]', '\U00010400', re.I|re.A))
+ self.assertTrue(re.match(r'[19\U00010428]', '\U00010428', re.I|re.A))
# Two different characters have the same lowercase.
assert 'K'.lower() == '\u212a'.lower() == 'k' # 'K'
self.assertTrue(re.match(br'[9-a]', b'_', re.I))
self.assertIsNone(re.match(br'[9-A]', b'_', re.I))
self.assertTrue(re.match(r'[\xc0-\xde]', '\xd7', re.I))
+ self.assertTrue(re.match(r'[\xc0-\xde]', '\xe7', re.I))
self.assertIsNone(re.match(r'[\xc0-\xde]', '\xf7', re.I))
self.assertTrue(re.match(r'[\xe0-\xfe]', '\xf7', re.I))
+ self.assertTrue(re.match(r'[\xe0-\xfe]', '\xc7', re.I))
self.assertIsNone(re.match(r'[\xe0-\xfe]', '\xd7', re.I))
self.assertTrue(re.match(r'[\u0430-\u045f]', '\u0450', re.I))
self.assertTrue(re.match(r'[\u0430-\u045f]', '\u0400', re.I))
self.assertTrue(re.match(r'[\U00010400-\U00010427]', '\U00010428', re.I))
self.assertTrue(re.match(r'[\U00010400-\U00010427]', '\U00010400', re.I))
+ self.assertTrue(re.match(r'[\xc0-\xde]', '\xd7', re.I|re.A))
+ self.assertIsNone(re.match(r'[\xc0-\xde]', '\xe7', re.I|re.A))
+ self.assertTrue(re.match(r'[\xe0-\xfe]', '\xf7', re.I|re.A))
+ self.assertIsNone(re.match(r'[\xe0-\xfe]', '\xc7', re.I|re.A))
+ self.assertTrue(re.match(r'[\u0430-\u045f]', '\u0450', re.I|re.A))
+ self.assertIsNone(re.match(r'[\u0430-\u045f]', '\u0400', re.I|re.A))
+ self.assertIsNone(re.match(r'[\u0400-\u042f]', '\u0450', re.I|re.A))
+ self.assertTrue(re.match(r'[\u0400-\u042f]', '\u0400', re.I|re.A))
+ self.assertTrue(re.match(r'[\U00010428-\U0001044f]', '\U00010428', re.I|re.A))
+ self.assertIsNone(re.match(r'[\U00010428-\U0001044f]', '\U00010400', re.I|re.A))
+ self.assertIsNone(re.match(r'[\U00010400-\U00010427]', '\U00010428', re.I|re.A))
+ self.assertTrue(re.match(r'[\U00010400-\U00010427]', '\U00010400', re.I|re.A))
+
+ self.assertTrue(re.match(r'[N-\x7f]', 'A', re.I|re.A))
+ self.assertTrue(re.match(r'[n-\x7f]', 'Z', re.I|re.A))
+ self.assertTrue(re.match(r'[N-\uffff]', 'A', re.I|re.A))
+ self.assertTrue(re.match(r'[n-\uffff]', 'Z', re.I|re.A))
+ self.assertTrue(re.match(r'[N-\U00010000]', 'A', re.I|re.A))
+ self.assertTrue(re.match(r'[n-\U00010000]', 'Z', re.I|re.A))
+
# Two different characters have the same lowercase.
assert 'K'.lower() == '\u212a'.lower() == 'k' # 'K'
self.assertTrue(re.match(r'[J-M]', '\u212a', re.I))