Regexp在Notepad ++中递归查找/替换

时间:2017-07-05 23:36:47

标签: regex recursion reference notepad++

我想知道是否可以在Notepad ++中编写正则表达式,允许我将SQL INSERT脚本修改为DELETE。

下面是我想要做的一个例子。

输入:

INSERT INTO table1 (xxxx, yyyy, zzzz, ....) VALUES (blah1111, foo2222, 3333333, ....);

输出:

DELETE FROM 
    table1
WHERE
    AND xxxx = 'blah1111'
    AND yyyy = 'foo2222'
    AND zzzz = '3333333'
    AND ....;

我尝试过使用递归,但我不知道如何正确地为每个递归步骤提供引用。

我的实际RegEx:

Find script: ((\w+)(?R)?, )
Replace script: (?1) = 

1 个答案:

答案 0 :(得分:1)

我不知道如何在Notepad ++中编写递归正则表达式,但您可以使用宏来自动执行至少部分转换。首先,您可以运行RegEx

找到:.gitignore

替换为:insert into (\w+) (\([^)]*\)) values (\([^)]*\));

使用上面的两个缓冲行来获取DELETE脚本的基本结构。然后点击\2\n\3\nDELETE FROM\n\1\nWHERE\n - > Macro并按Start RecordingCtrl-Homeright arrowCtrl-Shift-right arrowCtrl-xdeletedelete,{ {1}},Ctrl-EndTabCtrl-V,将第一个表格列的名称移动到正确的位置并继续,直到您拥有

=

正确。然后单击'并播放宏,直到正确生成所有行。 您也可以尝试将我录制的宏直接添加到%APPDATA%\ Notepad ++ \ shortcuts.xml:

WHERE
    AND xxxx = 'blah1111'
相关问题