blob: 613681488b1bda29ef81277000b15c90efaacc60 [file] [log] [blame]
Guido van Rossum6c6b78d1991-12-30 16:03:05 +00001# Provide backward compatibility for module "regexp" using "regex".
2
3import regex
4from regex_syntax import *
5
6class Prog:
Guido van Rossum7bc817d1993-12-17 15:25:27 +00007 def __init__(self, pat):
Guido van Rossum6c6b78d1991-12-30 16:03:05 +00008 save_syntax = regex.set_syntax(RE_SYNTAX_AWK)
9 try:
10 self.prog = regex.compile(pat)
11 finally:
12 xxx = regex.set_syntax(save_syntax)
Guido van Rossumfea2af11993-01-04 09:16:51 +000013 def match(self, *args):
14 if len(args) == 2:
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000015 str, offset = args
Guido van Rossumfea2af11993-01-04 09:16:51 +000016 elif len(args) == 1:
17 str, offset = args[0], 0
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000018 else:
Guido van Rossumfea2af11993-01-04 09:16:51 +000019 raise TypeError, 'wrong argument count'
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000020 if self.prog.search(str, offset) < 0:
21 return ()
Guido van Rossum42d1f631992-01-01 19:33:02 +000022 regs = self.prog.regs
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000023 i = len(regs)
Guido van Rossum42d1f631992-01-01 19:33:02 +000024 while i > 0 and regs[i-1] == (-1, -1):
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000025 i = i-1
26 return regs[:i]
27
28def compile(pat):
Guido van Rossum7bc817d1993-12-17 15:25:27 +000029 return Prog(pat)
Guido van Rossum6c6b78d1991-12-30 16:03:05 +000030
31cache_pat = None
32cache_prog = None
33
34def match(pat, str):
35 global cache_pat, cache_prog
36 if pat <> cache_pat:
37 cache_pat, cache_prog = pat, compile(pat)
38 return cache_prog.match(str)