| # Provide backward compatibility for module "regexp" using "regex". |
| |
| import regex |
| from regex_syntax import * |
| |
| class Prog: |
| def __init__(self, pat): |
| save_syntax = regex.set_syntax(RE_SYNTAX_AWK) |
| try: |
| self.prog = regex.compile(pat) |
| finally: |
| xxx = regex.set_syntax(save_syntax) |
| def match(self, *args): |
| if len(args) == 2: |
| str, offset = args |
| elif len(args) == 1: |
| str, offset = args[0], 0 |
| else: |
| raise TypeError, 'wrong argument count' |
| if self.prog.search(str, offset) < 0: |
| return () |
| regs = self.prog.regs |
| i = len(regs) |
| while i > 0 and regs[i-1] == (-1, -1): |
| i = i-1 |
| return regs[:i] |
| |
| def compile(pat): |
| return Prog(pat) |
| |
| cache_pat = None |
| cache_prog = None |
| |
| def match(pat, str): |
| global cache_pat, cache_prog |
| if pat <> cache_pat: |
| cache_pat, cache_prog = pat, compile(pat) |
| return cache_prog.match(str) |