搜索不包含特定表达式的多行文本
Searching multiple line text that doesn't contain certain expression
我们在程序中记录处理异常的方式是在 catch
块上调用我们的 Logger
class。
我们发现我们的几个 try/catch 块缺少这个记录器。我想创建一个正则表达式来找出那些包含 catch
块的块在哪里而不调用 Logger
class.
由于我对正则表达式的了解有限,我想到了这个:
catch[\s\S]+?{[\s\S]+?(?!log)[\s\S]+?}
但似乎这个 returns any catch 块而不是那些 不包含 单词 'log' 在他们里面。
我做错了什么/我该如何修复我的正则表达式?
编辑
需要的代码(正则表达式应该不是return这个)
catch (SomeException e)
{
Log(e);
}
错误代码(正则表达式应该 return 这个)
catch (SomeException e)
{
//Something
}
一个小小的改变会帮助你
/catch[^{]+{(?![^}]+log)[^}]+}/i
所做的更改
而不是使用 [\s\S]
让我们使用 [^{]
和 [^}]
更具体一点,它们是否定字符 classes,它们不会匹配任何内容class.
将[^}]
移到展望中。现在 (?![^}]+log)
确保 catch
块中没有 log
。
catch[^{]*{(?:(?!\blog\b|})[\s\S])*}
用标志 i
或 ignorecase.See 演示试试这个。
我们在程序中记录处理异常的方式是在 catch
块上调用我们的 Logger
class。
我们发现我们的几个 try/catch 块缺少这个记录器。我想创建一个正则表达式来找出那些包含 catch
块的块在哪里而不调用 Logger
class.
由于我对正则表达式的了解有限,我想到了这个:
catch[\s\S]+?{[\s\S]+?(?!log)[\s\S]+?}
但似乎这个 returns any catch 块而不是那些 不包含 单词 'log' 在他们里面。
我做错了什么/我该如何修复我的正则表达式?
编辑
需要的代码(正则表达式应该不是return这个)
catch (SomeException e)
{
Log(e);
}
错误代码(正则表达式应该 return 这个)
catch (SomeException e)
{
//Something
}
一个小小的改变会帮助你
/catch[^{]+{(?![^}]+log)[^}]+}/i
所做的更改
而不是使用
[\s\S]
让我们使用[^{]
和[^}]
更具体一点,它们是否定字符 classes,它们不会匹配任何内容class.将
[^}]
移到展望中。现在(?![^}]+log)
确保catch
块中没有log
。
catch[^{]*{(?:(?!\blog\b|})[\s\S])*}
用标志 i
或 ignorecase.See 演示试试这个。