通过正则表达式在SQL中获取引用的视图和表
我正在创建一些SQL表和视图。其中大多数都包含对其他对象的依赖关系。我想检查这些依赖项并检索表或视图创建的时间顺序 所以,基本上,我想做的是从Java中的SQL脚本中提取所有视图或表名。我正在使用模式匹配器和正则表达式。到目前为止有效,但我找不到正确的正则表达式 请看以下示例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
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
关键字之后将表和视图分开。解析连接表达式更容易。我建议你不能使用分而治之的方法。