首页 > 解决方案 > 用于在多行输入中查找特定模式的正则表达式

问题描述

我有一个这样的文件。我想要匹配的是,整个模块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

标签: regex

解决方案


你需要使用这个正则表达式,

\bmodule\s+asdf\b[\w\W]+?\bendmodule\b

module从整个单词开始匹配(\b称为单词边界,有助于匹配单词而不是部分匹配),然后是一个或多个空格,然后asdf是整个单词,然后[\w\W]*?以非贪婪方式匹配任何字符一次或多次,然后endmodule是整个单词。

正则表达式演示


推荐阅读