有如下内容,我想找到log.debug前面没有“)”和“{”的语句,即只找到第2个log.debug,这个正则表达式怎么写? if (log.isDebugEnabled()) log.debug("********** :");
log.debug("********** :");
if (log.isDebugEnabled())
{
log.debug("********** :");
} if (log.isDebugEnabled())
log.debug("********** :");
log.debug("********** :");
if (log.isDebugEnabled())
{
log.debug("********** :");
} if (log.isDebugEnabled())
log.debug("********** :");
log.debug("********** :");//该语句才是我要找的,其他都不是
if (log.isDebugEnabled())
{
log.debug("********** :");
} if (log.isDebugEnabled())
log.debug("********** :");
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2
我的方案是:
一行行读入内容,如果内容中有"if",置一标记,继续判有无";",有则表示"if"结束,清标记
如果if后有"{".则要判到有"}"表示"if"结束,清标记
在每行读入的同时,再判有无log.debug,如果有且无上述标记,则就是你要的
http://www.regexlab.com/zh/regref.htm而 Editplus 不支持反向预搜索,因此,想要不用 "反向预搜索" 写出这个表达式很困难。我测试了多种编辑器,最后发现编辑器中 Eclipse 支持反向预搜索,(当然,支持反向预搜索的正则表达式引擎很多,我说的是现成的编辑器)表达式这样写:
(?<![){]\s{0,10000})log.debug可以符合搂主要求的 "只匹配第二个 log.debug"
(?<=([^){\s]|^)\s*)log.debug\b编写成 C++ 代码:
rpattern_c pat( _T("(?<=([^){\\s]|^)\\s*)log.debug\\b") , SINGLELINE | NORMALIZE );
.*((\){))log.debug
java:".*((\\){))log.debug"
{
log.debug("********** :");
} if (log.isDebugEnabled())
log.debug("********** :");
if (log.isDebugEnabled()) log.debug("********** :");
log.debug("********** :");//只有这句是我要查找的
//log.debug("********** :"); if (log.isDebugEnabled())
{
log.debug("ReportClientDocument initialization finished.");
log.debug("ReportHandler.initialize() End.");
}
{
log.debug("ReportClientDocument initialization finished.");
log.debug("ReportHandler.initialize() End.");//这句也会被查找到
}上面的第2个log.debug也会被找到,有没有办法让它也不被找到。我的企图就是查找所有的 log.debug 前面没有加判断语句 if (log.isDebugEnabled()) 的日志代码。请 sswater(光杆兵)、 keiy() 等高手继续帮助我!非常感谢!
http://community.csdn.net/Expert/topic/4446/4446899.xml?temp=.3027002