sql查询解析器---如何获取table_name

时间:2016-06-17 09:54:56

标签: python regex

我有很多文件将oracle sql语句分隔为;

我想从那些sql select

中获取table_name

本质上sql statment在文件中有3种类型

 Select * from table1;
select * from ( select * from table9 x inner join table10 y on x.col1=y.col1);
select * from table2,table3 where table2.col1=table3.col1

第一个对我来说很容易,因为我知道一些正则表达式。如何获取其他语句的表名

我更喜欢结果

 Table1
 table9
 table10
 table2
table3

提前致谢

1 个答案:

答案 0 :(得分:0)

加入之后找到一个单词,并在逗号后选择另一个单词。

>>> for m in re.findall(r'(from|join)\s+(\w+)(,\s*(\w+))?', s):
...     print(m[1])
...     if m[3]:
...         print(m[3])
...         
table1
table9
table10
table2
table3