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\)\,
后面一段和上面一段很相似,不再赘述。。。。