[英]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.