filebeat匹配日志正则通用表达式

pattern: ^\[?(?:\d\d){1,2}[-\/](?:0?[1-9]|1[0-2])[-\/](?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])[T ](?:2[0123]|[01]?[0-9]):(?:[0-5][0-9]):(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\s*(?:[0-9]+.[0-9]+)?\]?

这个 pattern 是一个匹配 ISO 8601 时间格式的正则表达式。其中,ISO 8601 是一种国际标准化的时间和日期表示方法,以年-月-日T时:分:秒的形式表示时间点,例如 2023-05-25T09:10:45.123456。

该正则表达式的具体解释如下:

^ 表示匹配字符串开头。
\(? 表示可选左括号。
(?:\d\d){1,2} 表示匹配一到两位数字,即日期中的年份。
[-\/] 表示匹配日期分隔符,可以是 - 或 / 中的任意一个。
(?:0?[1-9]|1[0-2]) 表示匹配一到两位数字,即日期中的月份。注意这里使用了非捕获组 (?:)。
[-\/] 表示再次匹配日期分隔符。
(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]) 表示匹配日期中的日期部分,可以是一位数(1-9)、两位数(01-09)或者二十多天(10-31)之一。
[T ] 表示匹配时间分隔符,可以是 T 或 空格。
(?:2[0123]|[01]?[0-9]) 表示匹配小时,可以是 00-23 或 0-9 之一。
: 表示匹配分钟和秒钟之间的冒号。
(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?) 表示匹配分钟和秒钟部分,可以是 00-59 或 60,还可包含毫秒、微秒等小数部分,例如 .123456。
\s* 表示匹配任意多个空格,包括空格、制表符等。
(?:[0-9]+.[0-9]+)? 表示匹配可选的浮点数,例如 +08.00。
\]?\(? 表示匹配可选的右括号或左括号。
因此,这个正则表达式可以匹配类似 2023-05-25T09:10:45.123456+08.00 或 2023-05-25 09:10:45 这样的时间格式。

 multiline:
    pattern: ^\[?(?:\d\d){1,2}[-\/](?:0?[1-9]|1[0-2])[-\/](?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])[T ](?:2[0123]|[01]?[0-9]):(?:[0-5][0-9]):(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\s*(?:[0-9]+.[0-9]+)?\]?
    negate: true
    match: after
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: