首页 > 解决方案 > URL 上的 Grok 和正则表达式

问题描述

给定以下输入:

https://api.example.net:443/v1/domain/action
https://api.exmaple.net:443/v2/domain/action?tag=test
https://api.example.net:443/v3/domain/action/test

Grok 正则表达式可以将以上所有内容分解为:

{
  "request_endpoint": [
    [
      "https://api.example.net:443"
    ]
  ],
  "request_version": [
    [
      "v3"
    ]
  ],
  "request_domain": [
    [
      "domain"
    ]
  ],
  "request_api": [
    [
      "action"
    ]
  ]
}

这是我能得到的最接近的值,但是/n如果第一个示例通过,则有一个:

/(?<request_endpoint>[^/]+)+/(?<request_version>[^/]+)+/(?<request_domain>[^/]+)/(?<request_api>[^/!\?]+)

我正在使用https://grokdebug.herokuapp.com/进行测试

标签: regexlogstashlogstash-grok

解决方案


我认为这解决了它,我得到了换行符,因为我的测试字符串有:(

/(?<request_endpoint>[^/]+)+/(?<request_version>[^/]+)+/(?<request_domain>[^/]+)/(?<request_api>[^/!\?]+)


推荐阅读