RegEx для поиска определенного шаблона в многострочном вводе - PullRequest
1 голос
/ 28 апреля 2019

У меня есть такой файл.Все, что я хочу сопоставить, это весь модуль 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.

(module asdf .*(\n)+(.*\n)+)+endmodule

1 Ответ

1 голос
/ 28 апреля 2019

Вам нужно использовать это регулярное выражение,

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

Начать сопоставление с module как целое слово (\b называется граница слова и помогает в сопоставлении слова, а не частично), за которым следует один или несколько пробелов, затем asdf как целое слово, а затем [\w\W]*? соответствует любому символу один или несколько раз не жадным образом, за которым следует endmodule как целое слово.

Regex Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...