NotePad++ 正則表達式複製指定字符串
本文僅描述一種複製文本的方法,如需拓展功能請自行百度。本人對正則表達式規則也不是很清晰,穩重若有錯誤請評論指出,但勿暴躁!。
在使用Verilog時,頂層模塊例化代碼時,使用一種比較簡潔的方法來例化程序,於是決定使用Notepad++文本工具配合正則表達式處理。
如下一段代碼,處理前後:
/*Verilog代碼處理前*/
module clarke_module(
input rst,
input clk,
input Clarke_Start,
input signed [15:0] Ia,
input signed [15:0] Ib,
output reg signed[15:0] Ialpha,
output reg signed[15:0] Ibeta,
output reg Clarke_Done
);
/*Verilog代碼處理後*/
clarke_module clarke_module_inst(
.rst(rst),
.clk(clk),
.Clarke_Start(Clarke_Start),
.Ia(Ia),
.Ib(Ib),
.Ialpha(Ialpha),
.Ibeta(Ibeta),
.Clarke_Done
);
首先處理第一行,處理爲
/*處理前*/
module clarke_module(
/*處理後*/
clarke_module clarke_module_inst(
使用Notepad++ 的替換功能,查找目標和替換目標爲
(^module) (.*)\(
\2 \2\_inst\(
具體看圖:
詳解:此處的()表示一個坑位,查找目標中有兩對括號(最後一個括號表示括號字符,前面帶有轉義字符斜槓)表示兩個坑位,坑位1坑位2。第一個括號中^表示從行首開始匹配,需要匹配的字符串爲module。第二個括號中 .*表示匹配任意字符,最後有一個\( 表示匹配一個括號字符。替換時,\2 表示把坑位2中的數據原封不動拿過來,此處需要把坑位2中的數據用兩次,並在第二個後面加上 _inst 。其中注意空格,否則替換完成會多或少一些空格。
然後開始後面的替換
/*查找目標*/
(^.*\]) (.*)\,
/*替換目標*/
.\2\(\2\)\,
後面一段和上面一段很相似,不再贅述。。。。