RegEx用于在多行输入中查找特定模式

时间:2019-04-28 19:02:56

标签: regex

我有一个像这样的文件。我要匹配的是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

1 个答案:

答案 0 :(得分:1)

您需要使用此正则表达式,

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

开始将module匹配为整个单词(\b被称为 word boundary ,并帮助匹配单词,而不是部分匹配),然后是一个或多个空格asdf作为整个单词,然后[\w\W]*?以非贪婪的方式匹配任何字符一次或多次,然后是endmodule作为整个单词。

Regex Demo