我正在使用 Python 2.6.4。
我在文本文件中有一系列选择语句,我需要从每个选择查询中提取字段名称。如果某些字段不使用嵌套函数(如 to_char() 等),这将很容易。
给定可能有多个嵌套括号的 select 语句字段,如“ltrim(rtrim(to_char(base_field_name, format))) renamed_field_name”,或者只是“base_field_name”作为字段的简单情况,是否可以使用 Python 的 re编写正则表达式以提取 base_field_name 的模块?如果是这样,正则表达式会是什么样子?
最佳答案
正则表达式不适合解析“嵌套”结构。相反,请尝试使用成熟的解析工具包,例如 pyparsing -- 可以找到专门使用 pyparsing 解析 SQL 的示例 here和 here ,例如(毫无疑问,您需要以这些示例为起点,并编写您自己的一些解析代码,但是,这绝对不是太难)。
关于python - Python中的递归嵌套表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174015/