Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
通过正则表达式在SQL中获取引用的视图和表_Sql_Regex_Parsing_Matcher - Fatal编程技术网

通过正则表达式在SQL中获取引用的视图和表

通过正则表达式在SQL中获取引用的视图和表,sql,regex,parsing,matcher,Sql,Regex,Parsing,Matcher,我正在创建一些SQL表和视图。其中大多数都包含对其他对象的依赖关系。我想检查这些依赖项并检索表或视图创建的时间顺序 所以,基本上,我想做的是从Java中的SQL脚本中提取所有视图或表名。我正在使用模式匹配器和正则表达式。到目前为止有效,但我找不到正确的正则表达式 请看以下示例sql脚本: Select * from view_1; select abc, bda from view_2, view_3 v8, view_4 where whatever; select * from view_5

我正在创建一些SQL表和视图。其中大多数都包含对其他对象的依赖关系。我想检查这些依赖项并检索表或视图创建的时间顺序

所以,基本上,我想做的是从Java中的SQL脚本中提取所有视图或表名。我正在使用模式匹配器和正则表达式。到目前为止有效,但我找不到正确的正则表达式

请看以下示例sql脚本:

Select * from view_1; select abc, bda from view_2, view_3 v8, view_4 where whatever;
select * from view_5 join view_6 where whatever; 
select v6.abc, v7.bda from view_7 v6 join view_8 v7;
select abc from

view9

,

view10,

view11;

select abcd from view12 v   
, view13 s;
我想提取的是一个包含视图1到13的列表。 (视图1、视图2、…、视图13)

我已经试过了

(?<=(from|join))\s+\w+((\s+\w+)?)(\s*,\s*\w+(\s+\w+)?)*

(?我同意Henrique的观点,正则表达式可能不是解决这个问题的方法(除非您可以假设简单的SQL语句)。可能使用SQL解析器。询问有关Java的SQL解析器的问题。我看了一个,发现了一个可以查找select语句中引用的表的解析器。

我认为您无法用一个正则表达式来解析它,以便在
from
关键字之后将表和视图分开。解析
连接
表达式更容易。我建议你不能使用分而治之的方法。