示例#1
0
    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