正则表达式多次匹配代码块

bis*_*ria 3 regex

我想一个代码块匹配的多个时间的文件,但不能工作了正则表达式来做到这一点.代码块的一个例子是:

//@debug
...
// code in here
...
//@end-debug (possibly more comments here on same line)
Run Code Online (Sandbox Code Playgroud)

我正在尝试匹配的每个代码块将从//@debug包含的行的末尾开始并停止//@end-debug

我现在有这个:

/(\/{2}\@debug)(.|\s)*(\/{2}\@end-debug).*/
Run Code Online (Sandbox Code Playgroud)

但这匹配了从第一个//@debug//@end-debug文件最后一行末尾的一个大块.

有任何想法吗?

cle*_*tus 6

基本上你的正则表达式是贪婪的.这意味着通配符操作符可以根据您看到的结果尽可能多地获取.只要在适当的时候将其改为非贪婪.在你的情况下使用:

/(/{2}\@debug)(.|\s)*?(/{2}\@end-debug).*/