npp中的正则表达式可以找到所有内容,包括一个单词,直到另一个单词

时间:2017-07-31 21:11:34

标签: regex notepad++

我正在尝试生成一个正则表达式,以便在AS之后捕获任何内容(包括换行符),直到SELECT删除AS。 有多种变化,我想在每次有INSERT时重复。有些人根本没有AS而且什么都不做。

INSERT OVERWRITE schema.table1
AS
SELECT

INSERT OVERWRITE schema.table2
AS -- (some spaces sometimes here)
SELECT

我只想删除以AS开头的行,否则其他一些单词可能会被更改。我无法弄清楚如何执行只执行此操作的惰性正则表达式,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

你想要的是: AS[\d\D]*?(?=SELECT) enter image description here

您可以在这里查看演示。 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
  • 如果INSERT或AS行可以在多行上,请检查. matches newline

<强>替换

$1   : group 1

给定示例的结果:

INSERT OVERWRITE schema.table1
SELECT

INSERT OVERWRITE schema.table2
SELECT