def test_string_match_flags(self): regex = pattern_as_regex(r'(foo)*', allow_wildcards=False, flags=re.MULTILINE | re.IGNORECASE) self.assertEqual(r'\(foo\)\*', regex.pattern) self.assertTrue(regex.flags & re.IGNORECASE) self.assertTrue(regex.flags & re.MULTILINE)
def test_wildcard_flags(self): regex = pattern_as_regex(r'(foo)*', allow_wildcards=True, flags=re.MULTILINE | re.IGNORECASE) self.assertEqual(r'^\(foo\).*$', regex.pattern) self.assertTrue(regex.flags & re.IGNORECASE) self.assertTrue(regex.flags & re.MULTILINE)
def func_performer(parser, pattern="", join=", "): values = [] try: regex = pattern_as_regex(pattern, allow_wildcards=False) except re.error: return '' for name, value in parser.context.items(): if name.startswith("performer:"): name, performance = name.split(':', 1) if regex.search(performance): values.append(value) return join.join(values)
def __init__(self, filters): self.errors = dict() self.match_regexes = defaultdict(list) for lineno, line in enumerate(filters.splitlines()): line = line.strip() if line and line[0] in ('+', '-'): _list = line[0] remain = line[1:].strip() if not remain: continue try: regex_search = pattern_as_regex(remain, allow_wildcards=True, flags=re.IGNORECASE) self.match_regexes[_list].append(regex_search) except re.error as e: log.error("Failed to compile regex /%s/: %s", remain, e) self.errors[lineno] = str(e)
def test_regex_raises(self): with self.assertRaises(re.error): pattern_as_regex(r'/^foo(.*/')
def test_regex_extra_flags(self): regex = pattern_as_regex(r'/^foo.*/im', flags=re.VERBOSE) self.assertEqual(r'^foo.*', regex.pattern) self.assertTrue(regex.flags & re.VERBOSE) self.assertTrue(regex.flags & re.IGNORECASE) self.assertTrue(regex.flags & re.MULTILINE)
def test_regex(self): regex = pattern_as_regex(r'/^foo.*/') self.assertEqual(r'^foo.*', regex.pattern) self.assertFalse(regex.flags & re.IGNORECASE) self.assertFalse(regex.flags & re.MULTILINE)
def test_wildcard(self): regex = pattern_as_regex(r'(foo?)\\*\?\*', allow_wildcards=True) self.assertEqual(r'^\(foo.\)\\.*\?\*$', regex.pattern) self.assertFalse(regex.flags & re.IGNORECASE) self.assertFalse(regex.flags & re.MULTILINE)