我正在尝试生成一个正则表达式,以便在AS之后捕获任何内容(包括换行符),直到SELECT删除AS。 有多种变化,我想在每次有INSERT时重复。有些人根本没有AS而且什么都不做。
INSERT OVERWRITE schema.table1
AS
SELECT
INSERT OVERWRITE schema.table2
AS -- (some spaces sometimes here)
SELECT
我只想删除以AS开头的行,否则其他一些单词可能会被更改。我无法弄清楚如何执行只执行此操作的惰性正则表达式,任何帮助都会非常感激。
答案 0 :(得分:1)
您可以在这里查看演示。 https://regex101.com/r/IFNqbG/3
答案 1 :(得分:0)
(INSERT\b.*?\R)AS.*?\R(?=SELECT\b)
$1
<强>解释强>
( : start group 1
\bINSERT\b : literally 'INSERT', with word boundaries to not match 'INSERTED' for instance
.*? : 0 or more anycharacter, not greedy
\R : any kind of linebreak
) : end group 1
AS\b : literally 'AS', with word boundary to not match 'ASSIGN' for instance
.*? : 0 or more anycharacter, not greedy
\R : any kind of linebreak
(?=SELECT\b) : lookahead, make sure we have SELECT after but not SELECTED
. matches newline
<强>替换强>
$1 : group 1
给定示例的结果:
INSERT OVERWRITE schema.table1
SELECT
INSERT OVERWRITE schema.table2
SELECT