【问题标题】:Ruby regex for fluentbit流利位的 Ruby 正则表达式
【发布时间】:2022-07-22 22:55:19
【问题描述】:

我需要为流利的位创建一个正则表达式这是我尝试过的

Regex ^\[(?<log_time>[^ ][-.\d\+:]+T[:\d]*)([^\]])*?\]\s+(?<severity>[^ ]\w+):\s+(?<message>.*)$

输入是2022-07-20 15:21:31,994 - INFO - Moving to Dashboard

期望的输出:

    log_time:  2022-07-20 15:21:31,994
    severity:  INFO
    message:   Moving to Dashboard

我怎样才能做到这一点? (在某些时候,我在毫秒之前得到 log_time 但这还不够) 帮助将不胜感激。谢谢

【问题讨论】:

  • 试试^(?&lt;log_time&gt;[0-9-]+ [:0-9,]+)\s+-\s+(?&lt;severity&gt;\w+)\s+-\s+(?&lt;message&gt;.*) (demo)
  • 您的模式尝试匹配不存在的字符,例如开头的[T
  • 谢谢@WiktorStribiżew,非常感谢,您能否分享任何最好的备忘单来学习正则表达式。

标签: regex ruby fluent-bit


【解决方案1】:

你可以使用

^(?<log_time>[0-9-]+ [:0-9,]+)\s+-\s+(?<severity>\w+)\s+-\s+(?<message>.*)

请参阅regex demo详情

  • ^ - 字符串开头
  • (?&lt;log_time&gt;[0-9-]+ [:0-9,]+) - 记录时间:一个或多个数字或-,然后是一个空格,然后是一个或多个冒号、数字或逗号
  • \s+-\s+ - 用一个或多个空格包裹的连字符
  • (?&lt;severity&gt;\w+) - 严重性:一个或多个单词字符
  • \s+-\s+ - 用一个或多个空格包裹的连字符
  • (?&lt;message&gt;.*) - 消息:除换行符之外的任何零个或多个字符尽可能多(不需要$

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 2011-08-06
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多