正则表达式匹配除一些特定日志行之外的所有日志

问题描述 投票:-1回答:1

假设,我有以下异常:

E 180822 133447.332 [pool-9982-thread-1] verylongfoo 
java.lang.NullPointerException

我需要的是只匹配那些包含java.lang.NullPointerException但缺少verylongfoo部分的异常。它应该只是一个与Perl 5兼容的正则表达式,而不是用Perl编写的程序

我尝试过类似的东西

.*(?<!verylongfoo)[\s]java\.lang\.NullPointerException

还有这个

(?!verylongfoo).*\sjava\.lang\.NullPointerException

但都不起作用。

当一个lookbehind匹配不需要的部分时,它只是从它的第二个字母开始匹配。

你能帮我吗?

regex perl
1个回答
1
投票

你的正则表达式很接近,它只需要锚定到行的开头,然后负向前导需要一个.*来允许verylongfoo在字符串中的任何位置:

^(?!.*verylongfoo).*\sjava\.lang\.NullPointerException

带有单线和多线串的Regex101演示是here

© www.soinside.com 2019 - 2024. All rights reserved.