使用grok debugger时正则不匹配

新手上路,请多包涵

在写一个logstash的配置文件,目的是将一段日志通过grok过滤成我需要的格式。完成这个任务需要通过正则表达式。
http://grokdebug.herokuapp.com/
以上是测试正则表达式与日志格式是否匹配的可用网址

日志格式部分如下:

# Query_time: 1.899845  Lock_time: 0.000072 Rows_sent: 0  Rows_examined: 581632

我写的正则如下:

(?<Query_time>[0-9]{1,2}\.[0-9]{6})\s(?<Lock_time>.*)\s(?<Rows_sent>.)\s(?<Rows_examined>.*)

匹配的结果如下:

clipboard.png

这个显然有问题。。。
初学正则不太明白应该怎么修改。我希望最后匹配完都能得到第一个Query_time那样的结果。
希望有相关经验的前辈不吝指教,谢谢!

阅读 8.2k
1 个回答
新手上路,请多包涵

主要是你正则表达式匹配的的问题,后边的正则直接匹配到了所有字符。
如果你后边那些项只需要数字的话,那就直接匹配数字。
(?<Query_time>[0-9]{1,2}.[0-9]{6})s(?<Lock_time>[0-9]{1,2}.[0-9]{6})s(?<Rows_sent>[0-9]+)s(?<Rows_examined>[0-9]+)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进