如何使用正则表达式在 Notepad++ 中根据现有单词添加新行

如何使用正则表达式在 Notepad++ 中根据现有单词添加新行

我想使用正则表达式在 Notepad++ 中根据现有单词添加新行。例如,我有以下包含多个创建表语句的文件,我需要添加“如果存在则删除表”。

CREATE TABLE table1 ( ) ;
CREATE TABLE table2 ( ) ;
CREATE TABLE table3 ( ) ;
CREATE TABLE table4 ( ) ;

我正在寻找如下所示的输出。这里的表名不同。

DROP TABLE IF EXISTS table1;
CREATE TABLE table1 ( ) ;

DROP TABLE IF EXISTS table2;
CREATE TABLE table2 ( ) ;

DROP TABLE IF EXISTS table3;
CREATE TABLE table3 ( ) ;

DROP TABLE IF EXISTS table4;
CREATE TABLE table4 ( ) ;

答案1

寻找

CREATE TABLE (\w*) \( \) ;

并将其替换为

DROP TABLE IF EXISTS \1;\nCREATE TABLE (\1) \( \) ;\n

确保将搜索模式设置为正则表达式。

在此处输入图片描述

这是如何工作的?(\w*)定义了一个捕获组,您可以在替换中使用 来引用\1它。如您所见,您甚至可以多次引用它们。请注意,正则表达式中的括号\( \)用反斜杠转义,因为它们是不是捕获组。

答案2

  • Ctrl+H
  • 找什么:CREATE TABLE (\w+) \( \) ;
  • 用。。。来代替:DROP TABLE IF EXISTS $1;\n$0
  • 取消选中 相符
  • 查看 环绕
  • 查看 正则表达式
  • Replace all

解释:

CREATE TABLE    # Literally
(\w+)           # group 1, 1 or more word character (the table name)
\( \) ;         # parentheses, have to be escaped as they have special meaning in regex

替代品:

DROP TABLE IF EXISTS    # literally
$1                      # content of group 1, the table name
;                       # semicolon
\n                      # linefeed, you can use \r\n for windows EOL
$0                      # content of group 0, the whole match (CREATE TABLE ...)

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容