def __init__(self, flags=0, with_whitespaces=False): self.lexicon = get_lexicon(PYTHON_VERSION_LESS_THAN_3) self.groups = Groups p = [] s = Pattern() s.flags = flags if PYTHON_VERSION_LESS_THAN_3: s.groups = len(self.lexicon) + 1 for group, (phrase, name) in enumerate(self.lexicon, 1): p.append( SubPattern(s, [ (SUBPATTERN, (group, parse(phrase, flags))), ])) # append subpattern self.lexicon.append((group - 1, name)) else: for phrase, name in self.lexicon: gid = s.opengroup() p.append( SubPattern(s, [ (SUBPATTERN, (gid, 0, 0, parse(phrase, flags))), ])) s.closegroup(gid, p[-1]) p = SubPattern(s, [(BRANCH, (None, p))]) self.scanner = sre_compile(p).scanner self.with_whitespaces = with_whitespaces