Python中的递归嵌套表达式

The*_*ver 3 python regex expression nested

我使用的是Python 2.6.4.

我在文本文件中有一系列select语句,我需要从每个select查询中提取字段名称.如果某些字段没有使用像to_char()等嵌套函数,这将很容易.

如果select语句字段可能有多个嵌套括号,如"ltrim(tortr(to_char(base_field_name,format)))renamed_field_name",或者只是"base_field_name"的简单情况作为字段,是否可以使用Python的re模块来编写提取base_field_name的正则表达式?如果是这样,正则表达式会是什么样子?

Ale*_*lli 11

正则表达式不适合解析"嵌套"结构.相反,尝试一个完整的解析工具包,例如pyparsing - 例如,在这里和这里可以找到专门用于解析SQL的pyparsing 的例子(你无疑需要将这些例子作为一个起点,并且写一些你自己的解析代码,但是,这绝对不是太难).