【问题标题】:Regex in Notepad++: Find all 'INSERT INTO...;' queriesNotepad++ 中的正则表达式:查找所有 'INSERT INTO ...;'查询
【发布时间】:2012-11-17 05:48:14
【问题描述】:

我有一个很大的 sql 文件,其中包含很多“创建表...”和“插入...”查询。 现在我想从文件中消除所有“插入”查询。 插入查询有点像:

INSERT INTO 'some_table' (col1, col2, col3) values
('val11','val12','val13'),
('val21','val22','val23'),
('val31','val32','val33');

使用 记事本++ 我想使用正则表达式查找并删除所有这些“插入”查询。

当我尝试使用正则表达式 INSERT INTO((.*\r\n)*) 进行查找时,它会选择从第一个 INSERT 查询的开头到文件结尾。 现在,当我在这个 reqex (INSERT INTO((.*\r\n)*);) 之后放置分号时,它什么也没找到? 如何使用分号 (;) 终止正则表达式搜索?

【问题讨论】:

    标签: regex search notepad++


    【解决方案1】:

    分号位于行尾之前,这就是它需要在您的正则表达式中的位置。

    INSERT INTO(([^;]*\r\n)*(.*;(\r\n|$)))
    

    更可靠的方法是:

    INSERT INTO[\s\S]*?(?<=;)\s*$
    

    这允许您在查询中使用分号文字。

    【讨论】:

      【解决方案2】:
      INSERT INTO.*?;
      

      选择match newline option


      你贪婪地匹配它(.*)...使用惰性限定符(.*?)

      不需要\r\n...

      【讨论】:

      • gr8,选择match newline 选项是多么容易!谢谢。
      • +1,但文字中的分号(例如'val11;')会破坏这一点。
      • @Asad hmm..that would break it
      猜你喜欢
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      相关资源
      最近更新 更多