【问题标题】:regex to exclude string unless another string exists正则表达式排除字符串,除非另一个字符串存在
【发布时间】:2019-04-15 09:45:37
【问题描述】:

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

这两个字符串可以出现在日志条目中的任何位置,但是“dbug”总是在“触发”之前。

是否有可能构建一个可以做到这一点的正则表达式?

如果能提供任何帮助,我将不胜感激!

【问题讨论】:

    标签: regex fluentd


    【解决方案1】:

    我们可以在这里尝试使用前瞻,例如

    ^(?:(?!.*\bdbug\b)|(?=.*\bdbug\b.*\bfiring\b)).*$
    

    Demo

    第一个前瞻(?!.*\bdbug\b) 匹配任何不包含dbug 的行,第二个前瞻(?=.*\bdbug\b.*\bfiring\b) 匹配任何同时包含dbugfiring 的行,按此顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多