Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于在oracle代码中检测表名的正则表达式_Python_Regex_Re Python - Fatal编程技术网

Python 用于在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

我想检测哪些表用于从oracle中的过程和函数代码中获取数据

... 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示例,您可以在这里找到一个有用的起点: