当前位置:  开发笔记 > 编程语言 > 正文

Python库将正则表达式解析为AST?

如何解决《Python库将正则表达式解析为AST?》经验,为你挑选了0个好方法。

为了强调,我不想"使用正则表达式解析" - 我想"将正则表达式解析为符号树".(搜索只带来了前者...)

我的用例:为了加速对数据库的正则表达式搜索,我想解析一个正则表达式,(foo|bar)baz+(bat)*并拉出必须出现在匹配中的所有子串.(在这种情况下,只是baz因为foo/bar是替换而bat会出现0次.)

为此,我需要对正则表达式运算符/语义有所了解.re.DEBUG最近的:

In [7]: re.compile('(foo|bar)baz+(bat)', re.DEBUG)
subpattern 1
  branch
    literal 102
    literal 111
    literal 111
  or
    literal 98
    literal 97
    literal 114
literal 98
literal 97
max_repeat 1 4294967295
  literal 122
subpattern 2
  literal 98
  literal 97
  literal 116

但是,它只是打印出来,据我所知,c实现后来不会保留结构.关于如何在不编写我的所有者解析器的情况下解析它的任何想法?

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有