【发布时间】:2019-04-15 09:45:37
【问题描述】:
我目前正在使用 fluentd 正则表达式来匹配所有日志条目,除非消息包含字符串“dbug”。但是,如果日志在条目中同时包含“dbug”和“firing”,那么我需要正则表达式来匹配该字符串。
这两个字符串可以出现在日志条目中的任何位置,但是“dbug”总是在“触发”之前。
是否有可能构建一个可以做到这一点的正则表达式?
如果能提供任何帮助,我将不胜感激!
【问题讨论】:
我目前正在使用 fluentd 正则表达式来匹配所有日志条目,除非消息包含字符串“dbug”。但是,如果日志在条目中同时包含“dbug”和“firing”,那么我需要正则表达式来匹配该字符串。
这两个字符串可以出现在日志条目中的任何位置,但是“dbug”总是在“触发”之前。
是否有可能构建一个可以做到这一点的正则表达式?
如果能提供任何帮助,我将不胜感激!
【问题讨论】:
我们可以在这里尝试使用前瞻,例如
^(?:(?!.*\bdbug\b)|(?=.*\bdbug\b.*\bfiring\b)).*$
第一个前瞻(?!.*\bdbug\b) 匹配任何不包含dbug 的行,第二个前瞻(?=.*\bdbug\b.*\bfiring\b) 匹配任何同时包含dbug 和firing 的行,按此顺序。
【讨论】: