Python 用于在oracle代码中检测表名的正则表达式
我想检测哪些表用于从oracle中的过程和函数代码中获取数据Python 用于在oracle代码中检测表名的正则表达式,python,regex,re-python,Python,Regex,Re Python,我想检测哪些表用于从oracle中的过程和函数代码中获取数据 ... from <tablename>; ... from <tablename> <alias>; ... from <tablename> <alias> where ...; ... from <tablename> <alias> (, <tablename> <alias>)* where ... ... from
... from <tablename>;
... from <tablename> <alias>;
... from <tablename> <alias> where ...;
... from <tablename> <alias> (, <tablename> <alias>)* where ...
... from <tablename> <alias> (<join> <tablename> <alias> on <onclause>)* where ...
。。。从…起
... 从…起
... 从哪里。。。;
... 从(,)*哪里。。。
... 从(开始)*在哪里。。。
这些是一些可能的构造
我想在python中使用模块're'。我该如何做到这一点
这就是我到目前为止的想法:
[(procedure.split()[0],re.findall('FROM\w+\w*[WHERE |,|]*',procedure,flags=re.IGNORECASE]),用于过程中的过程]
您需要向我们展示更清晰的输入和输出示例。您可能想在之前尝试一下:不确定,但可能re.findall(r'(?i)FROM([^(),\s]+(?:[,\s]+[^,()\s]+)*),s)
将为您完成这项工作。我想您会发现在正则表达式中很难做到这一点。考虑编写一个适当的SQL解析器,比如说,使用“代码> PyPARSUN ”。下面是一个SQL示例,您可以在这里找到一个有用的起点: