【问题标题】:Regex string negation in FluentdFluentd 中的正则表达式字符串否定
【发布时间】:2018-06-14 13:12:44
【问题描述】:

我正在使用 Fluentd 解析这一行:

info=myinfo,details are included here;proc=/usr/;

我的解析器就是这个:

(?:info=(?<info>[^,]*))[^\;]+(?:\;)(?:proc=(?<process>[^\;]*))(?:\;)

这适用于匹配“详细信息”字段中的任何内容,但是,如果详细信息不包含“身份验证”一词,现在我只想匹配该行。

我尝试过使用正则表达式前瞻方法,例如:

(?:info=(?<info>[^,]*))^((?!Authentication).)*(?:\;)(?:proc=(?<process> 
[^\;]*))(?:\;)     

(?:info=(?<info>[^,]*))^(?!Authentication).*(?:\;)(?:proc=(?<process> 
[^\;]*))(?:\;)

但它不起作用。知道怎么做吗?

谢谢。

【问题讨论】:

    标签: regex parsing regex-negation fluentd


    【解决方案1】:

    您没有在详细信息部分之前检查逗号,因此否定匹配在逗号处。

    尝试以下模式。这似乎在这里工作(尽管它可能需要改进)。

    info=(?<info>[^,]*),(?:(?!authentication)[^;])+;proc=(?<process>[^;]*);
    

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 1970-01-01
      • 2014-04-19
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多