为了强调,我不想"使用正则表达式解析" - 我想"将正则表达式解析为符号树".(搜索只带来了前者...)
我的用例:为了加速对数据库的正则表达式搜索,我想解析一个正则表达式,(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实现后来不会保留结构.关于如何在不编写我的所有者解析器的情况下解析它的任何想法?