在Notepad++使用Python脚本插件插入特定位置文本

0 投票
2 回答
1506 浏览
提问于 2025-04-17 17:12

我先说一下,我是个完全的新手,刚接触Python,但我需要完成一个任务 :(

我已经安装了Python脚本插件,并且看过它是怎么工作的。但是我在理解我需要编写什么程序/脚本时遇到了很大的问题。

我有一个文本文件,用Notepad++打开,里面有很多类似这样的语句:

Insert into XXX (XXX,XXX,XXX) Values (XXX, XXX, XXX);

我需要通过Notepad++的Python脚本把这些语句转换成其他格式。

BEGIN
Insert into XXX (XXX,XXX,XXX) Values (XXX, XXX, XXX);
EXCEPTION
WHEN dup_val_on_index
THEN dbms_output.PUT_LINE('XXX');
END;
/

这意味着我需要在“插入语句”的前面和后面加上代码。

有没有人能帮帮我?我可以在经济计算方面提供帮助,但这个任务对我来说真的很难 :/

非常感谢你们 :-)

2 个回答

0

如果你想在Notepad++中找到并替换一些内容,可以试试下面的方法。
我假设 dbms_output.PUT_LINE('XXX') 是用来显示表名的,也就是你插入语句中的第一个xxx。

在查找和替换的设置中,取消勾选 Match case,然后选择正则表达式,并确保 match Newline 这个选项没有勾选(适用于Notepad++ 6.0及以上版本)。

查找内容:

Insert\s*into\s*([a-z0-9]*)(\s*)(.*)(\s*)values(\s*)(.*);

替换为:

BEGIN\r\n\Insert into \1 \3 values \6;\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE\(\'\1\'\);\r\nEND;

祝你好运!

0

假设你正在使用这个特定的Python插件,你可以使用正则表达式来替换内容:

editor.pyreplace(r"^([Ii]nsert into.*? [Vv]alues.*?\;)", r"BEGIN\r\n\1\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE('XXX');\r\nEND;/\r\n")

注意:我不太确定在dbms_output.PUT_LINE('XXX')中的'XXX'字符串是指表名、某个值,还是字面意思上的'XXX'。如果你想捕捉到具体是哪个,可以在正则表达式中添加另一个捕获组。

你也可以不使用Python插件,直接用类似的搜索/替换模式。Notepad++支持正则表达式的搜索和替换。

编辑:在Notepad++的内置搜索和替换中,选择正则表达式模式,这样应该可以正常工作:

Find what: ([Ii]nsert into.*? [Vv]alues.*?\;)
Replace with: BEGIN\r\n\1\r\nEXCEPTION\r\nWHEN dup_val_on_index\r\nTHEN dbms_output.PUT_LINE\('XXX'\);\r\nEND;/\r\n

撰写回答