簡體   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