首页 > 解决方案 > 正则表达式在时间后匹配字符串

问题描述

努力从日志消息中提取主机名,当日期从 2 位变为一位时,例如从 10 月 31 日到 11 月 1 日,关键字的提取开始失败......这里有一些我需要提取的日志主机名

对于以上所有三行,我想提取

我正在使用的当前正则表达式是 ^(?:[^ \n]* ){4}(?P<devicename1>[^ ]+)

标签: regexsplunk

解决方案


您可以使用

\s\d{2}(?::\d{2}){2}\s+(?P<devicename1>\S+)

请参阅正则表达式演示

或者,更明确的模式:

^\w+\s+\d+\s+\d{2}(?::\d{2}){2}\s+(?P<devicename1>\S+)

查看另一个演示

细节

  • ^\w+\s+\d+\s+- 字符串开头,1+ 单词字符,1+ 空格,1+ 数字,1+ 空格(即,确保我们得到正确的时间类子字符串)
  • \d{2}- 两位数
  • (?::\d{2}){2}- 两个序列:和两个数字
  • \s+- 1+ 空格
  • (?P<devicename1>\S+)- 组“devicename1”:一个或多个非空白字符。

推荐阅读