我最近看到这个stackoverflow问题排除了所有带有特定单词的catch语句。
Regex find catch blocks without log
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?:[^}](?!\blog\b))*\}
你会怎么做?
我已经尝试将负面环视部分切换为积极的外观,但所有这一切都是抓住空的例外。
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?:[^}](?=\blog\b))*\}
示例:
catch (Exception e)
{
log.debug("word");
//stuff
}
我想找到“log.debug”的所有实例
答案 0 :(得分:2)
你可以像这样使用积极的前瞻:
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?=[^\}]*\blog\b)[^\}]+\}
(?=[^\}]*\blog\b)
这会检查该catch块中是否有log
,并且仅当有log
字时才匹配。
如果您想查找log.debug
,只需将正则表达式编辑为:
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?=[^\}]*\blog\.debug\b)[^\}]+\}