繁体   English   中英

如何仅使用正则表达式从日志消息中使用正则表达式来查找正则表达式整个行?

[英]How can I use regular expressions to find an entire log line using a regex from the log message only?

我有许多apache日志,其中的消息与此类似:

GET编辑器/103HTTP/1.1 500 21471

我有许多这样的日志存储在ElasticSearch中,我想使用正则表达式检索它们。 例如,“ GET编辑器/103HTTP/1.1”和“ 21471”可以有所不同,因此我将它们设置为通配符。 我想通过使用模式* 500 *搜索来获取消息GET editor / 103HTTP / 1.1 500 21471存在的apache日志,其中*表示通配符。 如何使用正则表达式实现这一目标? 不同的日志具有不同的消息,因此通配符的数量也可以。

PS:我已经知道如何在ES中设置正则表达式查询。

正则表达式101

^GET ((?!500).)*\b500\b

正则表达式可视化

Debuggex演示

干得好

正则表达式

/(.*500.*)/g

测试字符串

GET editor/103HTTP/1.1 500 21471
GET editor/103HTTP/1.1 200 21471
GET editor/103HTTP/1.1 500 21471
GET editor/103HTTP/1.1 220 21471
GET editor/103HTTP/1.1 500 21471

结果

  • 比赛1
      1. [0-32] GET editor/103HTTP/1.1 500 21471
  • 比赛2
      1. [66-98] GET editor/103HTTP/1.1 500 21471
  • 比赛3
      1. [ GET editor/103HTTP/1.1 500 21471 ] GET editor/103HTTP/1.1 500 21471

演示版

在这里尝试演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM