我想在我的日志中搜索异常情况。启动正则表达式:
\wException\b
Run Code Online (Sandbox Code Playgroud)
(\w
这样我可以捕获异常的名称,例如 InvalidOperationException,而不仅仅是“异常”一词,并且可以\b
排除其他形式的异常,例如“SomeExceptionHandler”。)
这很有效,但我发现一个异常频繁出现,但我对此不感兴趣;我们就这么称呼它吧FooException
。我更改了我的正则表达式以包含负面的lookbehind:
\w(?<!Foo)Exception\b
Run Code Online (Sandbox Code Playgroud)
太好了,现在“FooException”已被排除。现在我发现这BarException
也产生了很多噪音,我也想排除它。所以我想我应该在lookbehind中尝试一个管道:
\w(?<!(Foo|Bar))Exception\b
Run Code Online (Sandbox Code Playgroud)
...但这被拒绝作为无效的正则表达式。
那么,如何在lookbehind中排除多个字符串呢?
Kob*_*obi 13
您没有提到您正在使用哪个工具,但它很可能会拒绝您的模式,因为大多数正则表达式风格不支持可变长度后向查找。
一个简单的解决方法是进行多个后视:
\w(?<!Foo)(?<!Bar)Exception\b
Run Code Online (Sandbox Code Playgroud)
您还可以匹配完整的异常:
\b(?!Foo|Bar)\w+Exception\b
Run Code Online (Sandbox Code Playgroud)