Regex 包含具有特定术语的所有catch块的正则表达式
我最近看到了这个stackoverflow问题,它排除了带有特定单词的所有catch语句 你会怎么做呢 我尝试过将消极环视部分切换为积极环视,但所做的只是捕获空的异常Regex 包含具有特定术语的所有catch块的正则表达式,regex,search,Regex,Search,我最近看到了这个stackoverflow问题,它排除了带有特定单词的所有catch语句 你会怎么做呢 我尝试过将消极环视部分切换为积极环视,但所做的只是捕获空的异常 catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?:[^}](?=\blog\b))*\} 例如: catch (Exception e) { log.debug("word"); //stuff } 我想查找“log.debug”的所有实例您可以像这样使用正向前瞻: ca
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?:[^}](?=\blog\b))*\}
例如:
catch (Exception e)
{
log.debug("word");
//stuff
}
我想查找“log.debug”的所有实例您可以像这样使用正向前瞻:
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)[^\}]+\}
提供一些示例。特别是,您的意思是“我想用log查找所有catch块”吗?是的,我想查找log.debug的所有实例。我不确定这是否应该是一个新问题,但在找到logger.debug的所有实例之后,您如何在eclipse中将其替换为logger.error?不太确定$symbol在正则表达式中是如何工作的。@用户您使用的是特定的语言/正则表达式引擎吗?如果您使用的是PCRE引擎,您可以执行以下操作。否则,如果不支持
\G
和\K
,我认为最好提取整个catch块并对其进行完全替换.NET
可以使用可变宽度lookbehinds,我认为这比PCRE更容易。但是我不认为javascript/java/python可以在单个正则表达式中实现这一点,因为还有其他代码块(不是catch块)。我不相信它支持/K。不过谢谢你的帮助@用户嘿,如果您将catch块包装在一些特殊字符周围,则可能无法找到该文件。我不知道,假设~
从未出现在文件中,您可以使用第一个正则表达式将~
放在
(如~catch
)之前,将log.debug
放在右大括号(如}
)之后。然后,使用一个具有前瞻性的正则表达式替换内部的所有log.debug
。之后,使用最后一次替换删除文件中的~
。
catch\s*\(\s*\w*\s+\w*\s*\)\s*\{(?=[^\}]*\blog\.debug\b)[^\}]+\}