正则表达式-从查询中捕获表名

时间:2019-06-27 11:18:36

标签: java regex

我编写了一个正则表达式来从AWS Athena上的sql查询中捕获表名

(?<=from|join|table|into|exists|update) (?!IF)(\w+\.*)+

,但是当有多个表名用逗号分隔时,它会失败

Select distinct W.WORKER_ID, W.FIRST_NAME, W.Salary 
from Table1 W, Table2 W1 
where W.Salary = W1.Salary 
and W.WORKER_ID != W1.WORKER_ID;

在这种情况下,它仅捕获Table1。我似乎找不到任何方法来捕获Table2(或在某些情况下为Table3

我尝试过

(?<=from|join|table|into|exists|update) (?!IF)(\w+\.*)+|(?:\s+\w*\,\s*(\w+\.*)+)

但是它也捕获列名,这意味着条件部分(?<=from...)不在其上工作。我怎样才能解决这个问题?我需要以某种方式使用捕获的组1来捕获其他表。

以下是我针对https://regex101.com/r/0dh3XV/2测试我的正则表达式的一些字符串

PS:我读了get table name from query using a regexget table name from query,但是解决方案对我不起作用。

编辑:不,我不需要任何SQL解析器,因此它不是重复的

0 个答案:

没有答案