多个值的正则表达式负向lookbehind

时间:2017-12-24 10:15:19

标签: regex

我想在日志中搜索异常。启动正则表达式:

\wException\b

\w是我捕捉异常的名称,例如InvalidOperationException,而不只是单词" exception",\b是排除其他异常形式,例如" SomeExceptionHandler"。)

这很好用,但我发现有一个例外经常发生,我不感兴趣;我们称之为FooException。我改变了我的正则表达式以包含负面的背后隐藏:

\w(?<!Foo)Exception\b

很好,现在&#34; FooException&#34;被排除在外。现在我发现BarException也会产生很多噪音,我也想排除它。所以我想我会在lookbehind中尝试一个管道:

\w(?<!(Foo|Bar))Exception\b

...但是作为无效的正则表达式被拒绝了。

那么,如何在lookbehind中排除多个字符串?

1 个答案:

答案 0 :(得分:2)

您没有提到您正在使用哪种工具,但很可能会拒绝您的模式,因为大多数正则表达式都不支持可变长度的外观。 一个简单的解决方法是拥有多个后视:

\w(?<!Foo)(?<!Bar)Exception\b

您还可以匹配完整的例外:

\b(?!Foo|Bar)\w+Exception\b