1

我有一个很大的 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)*);) 之后放置分号时,它什么也没找到?如何使用分号 ( ;) 终止正则表达式搜索?

4

2 回答 2

3

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

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

更可靠的方法是:

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

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

于 2012-11-29T07:40:53.850 回答
2
INSERT INTO.*?;

选择match newline option


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

不需要\r\n...

于 2012-11-29T07:41:39.430 回答