在一个正则表达式中包含和排除

在一个正则表达式中包含和排除

我们在工作中使用 HP SiteScope 系统来监控日志,并在捕获到特殊字符串或字符串组合时收到警报。

有一个字段放置了捕获字符串的正则表达式,但是我想排除一些我们用正则表达式捕获的结果。例如:

grep -E '(GOOD_STRING1|GOOD_STRING2)' | grep -v BAD_STRING

需要转换成单个正则表达式。类似这样的:

grep -E '(GOOD_STRING1|GOOD_STRING2)!BAD_STRING)'

那可能吗?

答案1

您可以使用 Perl 正则表达式来实现这一点:

$ echo 'GOOD_STRING1
> GOOD_STRING1BAD_STRING' | grep -P '(GOOD_STRING1|GOOD_STRING2)(?!BAD_STRING)'
GOOD_STRING1

相关内容