gpt4 book ai didi

java - 使用正则表达式搜索不 protected 记录器

转载 作者:行者123 更新时间:2023-12-01 15:24:25 24 4
gpt4 key购买 nike

我有一个相当大的项目,其中我的一位同事使用了记录器,但忘记在调用记录器之前进行“is-loggable”测试,正如您所知,在日志消息中使用字符串连接时,这可能效率很低。不过,一些记录器已得到适当的保护。

我正在寻找一个可以在 Eclipse 中使用的正则表达式来搜索所有那些不 protected 记录器调用,但我找不到带有负向后查找的正确正则表达式来执行此操作。

这里有一些示例可以使这一点更清楚:

我想匹配这个:

logger.fine("Exception raised: " + 
e.getClass().getName() + ". See console for details.");

我不想匹配这个:

if (logger.isLoggable(Level.FINE)) {
logger.fine("Exception raised: " +
e.getClass().getName() + ". See console for details.");
}

也不是这个:

if (logger.isLoggable(Level.FINE)) 
logger.fine("Exception raised: " +
e.getClass().getName() + ". See console for details.");

我不关心匹配消息内容或记录器方法调用之后的任何内容(severe()、warning()、...),我需要的只是 logger.fine部分。

到目前为止我已经使用了这个正则表达式: ((?<!if\s?.?logger\.isLoggable.?Level.{0,20})logger.(severe|warning|info|fine|finer|finest))但它匹配了我不想匹配的东西。知道如何解决这个问题吗?

代码已格式化(缩进是通过制表符完成的),这意味着我们可以对我们的期望非常严格。

最佳答案

尝试一下:

(?<!if\s?\(logger\.isLoggable[^\n]{0,20}\n\s{0,20})logger\.fine

说明:

(?<!         # open negative lookbehind
if\s?\(logger\.isLoggable # look for your if statement
[^\n]{0,20} # then gobble up a bunch of characters ...
\n # ... up to the end of the line
\s{0,20} # optional whitespace at the beginning of the next line
) # close the look behind
logger\.fine # now, is logger.fine there?

关于java - 使用正则表达式搜索不 protected 记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10381702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com