2

我最近看到了这个 stackoverflow 问题,它排除了所有带有特定单词的 catch 语句。

正则表达式查找没有日志的捕获块

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”的所有实例

4

1 回答 1

2

您可以像这样使用积极的前瞻:

catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?=[^\}]*\blog\b)[^\}]+\}

(?=[^\}]*\blog\b)这将检查log该 catch 块中是否有任何内容,并且仅在存在 word 时才匹配log

如果要查找log.debug,只需将正则表达式编辑为:

catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?=[^\}]*\blog\.debug\b)[^\}]+\}
于 2013-10-04T20:57:55.477 回答