RegEx用于在PHP源代码中查找空catch

Bra*_*rad 3 regex eclipse

我有一个巨大的遗留PHP代码库,有很多代码,如下所示:

try {
  doSomethingImportant();
} catch (Exception $e) {
}
Run Code Online (Sandbox Code Playgroud)

有很多代码,有人认为吞下所有异常然后对它们不做任何事情是个好主意.有时会有评论:

} catch (Exception $e) {
  // do nothing
}
Run Code Online (Sandbox Code Playgroud)

我希望将一些RegEx插入到Eclipse的搜索中,并找到大部分这些地方,以便我可以调查和重构.我很容易找到捕获块:

catch.*\{.*\}
Run Code Online (Sandbox Code Playgroud)

当catch块具有以下一个或多个条件时,匹配的适当方法是什么:

  • 仅限空白
  • // 只有评论和空白
  • /* */ 评论和whitspace只
  • ///* */评论和空格

//很容易,但我不知道如何处理多线的东西,/* */什么不是.有什么想法吗?

vks*_*vks 6

catch[^{]*\{\s*(?:\/\/[^\n]*|\/\*(?:[^\n]*\n)*[^\n]*\*\/)*\s*}
Run Code Online (Sandbox Code Playgroud)

您可以使用它来匹配多行.

见演示

https://regex101.com/r/sJ9gM7/122