我们在程序中记录处理异常的方式是调用Logger
块上的catch
类。
我们发现我们的几个try / catch块都缺少此记录器。我想创建一个正则表达式,找出那些包含catch
块而没有调用Logger
类的块的位置。
由于我对正则表达式的了解有限,我想出了这个:
catch[\s\S]+?{[\s\S]+?(?!log)[\s\S]+?}
但似乎这个会返回任何 catch块而不是那些不包含单词'log'的块。
我做错了什么/如何修复我的正则表达式?
修改
通缉代码(正则表达式不返回此内容)
catch (SomeException e)
{
Log(e);
}
错误代码(正则表达式应该返回此内容)
catch (SomeException e)
{
//Something
}
答案 0 :(得分:2)
一个小改动可以帮助你
/catch[^{]+{(?![^}]+log)[^}]+}/i
所做的更改
使用[\s\S]
而不是使用[^{]
和[^}]
更加具体,这些是否是与类中任何东西都不匹配的否定字符类。
将[^}]
移至前方。现在(?![^}]+log)
确保log
块中没有catch
。
答案 1 :(得分:0)