我想在日志中搜索异常。启动正则表达式:
\wException\b
(\w
是我捕捉异常的名称,例如InvalidOperationException,而不只是单词" exception",\b
是排除其他异常形式,例如" SomeExceptionHandler"。)
这很好用,但我发现有一个例外经常发生,我不感兴趣;我们称之为FooException
。我改变了我的正则表达式以包含负面的背后隐藏:
\w(?<!Foo)Exception\b
很好,现在&#34; FooException&#34;被排除在外。现在我发现BarException
也会产生很多噪音,我也想排除它。所以我想我会在lookbehind中尝试一个管道:
\w(?<!(Foo|Bar))Exception\b
...但是作为无效的正则表达式被拒绝了。
那么,如何在lookbehind中排除多个字符串?
答案 0 :(得分:2)
您没有提到您正在使用哪种工具,但很可能会拒绝您的模式,因为大多数正则表达式都不支持可变长度的外观。 一个简单的解决方法是拥有多个后视:
\w(?<!Foo)(?<!Bar)Exception\b
您还可以匹配完整的例外:
\b(?!Foo|Bar)\w+Exception\b