【问题标题】:Fluentd Regex: Group multiple values in single groupFluentd Regex:将多个值分组在一个组中
【发布时间】:2017-07-12 03:54:45
【问题描述】:

我正在尝试从以下字符串中截取一个字段:

|null|23|2017-07-11T19:03:40.511|Test|PageUnque#MasterCache|123450000||

解析字符串后,结果应该是这样的:

type: null id: 23 message: 2017-07-11T19:03:40.511|Test|PageUnque#MasterCache code: 123450000

我尝试使用下面的正则表达式,但没有按预期工作。

^\|(?<type>.*?)\|(?<id>.*?)\|(?<message>.[^\#]*)\|(?<code>.*?)\|$

【问题讨论】:

    标签: regex elasticsearch fluentd


    【解决方案1】:

    如果有更多示例或更多关于每个字段中预期信息的详细信息将会有所帮助。我在您的正则表达式中看到的主要问题是您似乎想要捕获“2017-07-11T19:03:40.511|Test|PageUnque#MasterCache”,但您在消息捕获组中不允许使用“#”字符

    (?<message>.[^\#]*)
    

    相反,这就是我所做的。我会注意到我假设代码将只包含数字。 https://regex101.com/r/urC2rj/1

    ^\|(?<type>.*?)\|(?<id>.*?)\|(?<message>.*)\|(?<code>[0-9]+)\|\|$
    

    我没有在正则表达式中更改它,而是使用“.*?”可能有点冒险,因为它允许您的正则表达式捕获很多东西。根据您的数据,它可能重要也可能不重要。

    【讨论】:

    • 太棒了!它就像一个魅力。感谢您的及时回复。
    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    相关资源
    最近更新 更多