正则表达式排除字符串,除非存在另一个字符串

时间:2019-04-15 09:45:38

标签: regex fluentd

我当前正在使用流利的正则表达式来匹配所有日志条目,除非消息中包含字符串“ dbug”。但是,如果日志中的条目中同时包含“ dbug”和“ firing”,则我需要使用正则表达式来匹配该字符串。

这两个字符串可以出现在日志条目中的任何位置,但是“ dbug”将始终在“射击”之前。

是否可以构建一个可以执行此操作的正则表达式?

对此我将不胜感激!

1 个答案:

答案 0 :(得分:1)

例如,我们可以在此处尝试使用先行

private

Demo

第一个前行^(?:(?!.*\bdbug\b)|(?=.*\bdbug\b.*\bfiring\b)).*$ 匹配根本不包含(?!.*\bdbug\b)的任何行,第二个前行dbug匹配包含(?=.*\bdbug\b.*\bfiring\b)和{{1 }},按此顺序。