我有一个像这样的文件。我要匹配的是asdf
的整个模块。
module asdf (a,b);
input a;
output b;
assign b = a;
endmodule
module abc (a,b);
input a;
output b;
assign b = a + b ;
endmodule
module xyz (a,b);
input a;
output b;
assign b = a - c;
endmodule
这意味着,我只想匹配以下内容。我尝试了多种方法,例如
module asdf (a,b);
input a;
output b;
assign b = a;
endmodule
当我尝试
(module asdf .*(\n)+(.*\n)+)+endmodule
它一直匹配到文件中endmodule的最后一次出现。但是,我希望第一次出现endmodule。
(module asdf .*(\n)+(.*\n)+)+endmodule
答案 0 :(得分:1)
您需要使用此正则表达式,
\bmodule\s+asdf\b[\w\W]+?\bendmodule\b
开始将module
匹配为整个单词(\b
被称为 word boundary ,并帮助匹配单词,而不是部分匹配),然后是一个或多个空格asdf
作为整个单词,然后[\w\W]*?
以非贪婪的方式匹配任何字符一次或多次,然后是endmodule
作为整个单词。