需要帮助编写泛型正则表达式,以便从以下场景中查找源表:
样品1:
INSERT INTO a.test
(
test1,
test2
)
select
test1,
test2
from
xyz.test
输出1:
xyz.test
样品2:
*******************************************************
MACRO
abc.test
PURPOSE
TO DELETE THE DATA FROM abc.test
INPUT PARAMS
NONE
CALLED BY
THIS MACRO IS BEING CALLED FROM sql
*******************************************************/
DELETE FROM sample.test
没有此作为示例的输出。测试是目标表而不是源。
我已经尝试了下面的正则表达式\b(?!DELETE\s+FROM\s+)(?:FROM|JOIN)\s+(\w+./*[^\s]+)
它的工作为第一种情况下,但第二种情况下,我期待没有输出,但我得到的样本。测试
2条答案
按热度按时间jfgube3f1#
我真的不认为正则表达式是安全的方法。要处理的事情真的太多了,比如评论,工会等等
我用SQLGlot库玩了一把,代码如下:
它输出以下内容:
似乎如你所愿...
pgpifvop2#
下面将从提供的两个示例中获取值。
需要注意的是,“delete”、“from” 或 “join” 是该行上的第一个非空白字符序列。
输出量