_regex_core.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:oa_qian 作者: sunqb 项目源码 文件源码
def _compile(self, reverse, fuzzy):
        index = self.info.named_lists_used[self.set_key]
        items = self.info.kwargs[self.name]

        case_flags = self.case_flags

        if not items:
            return []

        encoding = self.info.flags & _ALL_ENCODINGS
        fold_flags = encoding | case_flags

        if fuzzy:
            choices = [self._folded(fold_flags, i) for i in items]

            # Sort from longest to shortest.
            choices.sort(key=lambda s: (-len(s), s))

            branches = []
            for string in choices:
                branches.append(Sequence([Character(c, case_flags=case_flags)
                  for c in string]))

            if len(branches) > 1:
                branch = Branch(branches)
            else:
                branch = branches[0]
            branch = branch.optimise(self.info,
              reverse).pack_characters(self.info)

            return branch.compile(reverse, fuzzy)
        else:
            min_len = min(len(i) for i in items)
            max_len = max(len(self._folded(fold_flags, i)) for i in items)
            return [(self._opcode[case_flags, reverse], index, min_len,
              max_len)]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号