繁体   English   中英

使用notepad ++ python脚本插件在特定位置插入文本

[英]Insert text on specific positions with notepad++ python script plugin

我应该以我是一个完整的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;
/

这意味着我必须在插入到语句之前和之后放置代码。

有人可以帮助我吗? 我可能会通过经济计算或类似方法来提供帮助,但是对于我来说,此任务相当困难:/

非常感谢 :-)

假设是您正在使用的特定python插件,则可以使用regex replace:

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 ++的内置搜索和Regex模式下的替换一起使用:

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

如果您正在寻找基于Notepad ++的查找和替换解决方案,则可以尝试以下方法。
我假设dbms_output.PUT_LINE('XXX')用于显示表名(insert语句中的第一个xxx)。

在“查找和替换”上,取消选中“ Match case然后选择match Newline未选中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;

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM