包含具有特定术语的所有catch块的正则表达式

时间:2013-10-04 20:54:40

标签: regex search

我最近看到这个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”的所有实例

1 个答案:

答案 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)[^\}]+\}