gpt4 book ai didi

regex - GROK 正则表达式捕获组不匹配

转载 作者:行者123 更新时间:2023-12-04 07:41:40 27 4
gpt4 key购买 nike

我正在尝试学习如何第一次使用 logstash 的 grok 过滤器捕获日志文件中的不同字段,但无法正确解析它。我正在使用 https://grokdebug.herokuapp.com/来测试我的工作。这是一个示例日志文件:

06/05/2021 15:08:48.591 - [aa.bbbbbbbbbbbbbbb.cccccccccc.ddddddd.EEEeeeEeeeeEeeeeee.ffffFffffFff] - [INFO] - some more text here (0:1): {"data":{"source":"ttyUSB0","timeTotal":"20","timeLeft":"10"},"somethingid":"main","secret":"aqdsaqlaxgaaaaaa444aa32aa1aa3aaa1aaaaaaawghhjuyeqbbjjga7a64aaa","type":"TEST","message":"SOMEMESSAGE","testid":"foo.bar1.1620313718583","timestamp":1620313728590}
我使用的 grok 表达式( 并且不返回结果 )是
%{DATESTAMP:timestamp} - (?<test_data>(?<=\[)([a-zA-Z\.\[\]])*) - (?<rest>(?<=\[)(\[(\w*)\]))
当我删除后视表达式时 (?<=\[)来自 (?<test_data>(?<=\[)([a-zA-Z\.\[\]])*)(?<rest>(?<=\[)(\[(\w*)\]))我得到以下结果:
  • test_data: [aa.bbbbbbbbbbbbbbb.cccccccccc.ddddddd.EEEeeeEeeeeEeeeeee.ffffFffffFff]
  • rest: [INFO]

  • 我希望得到的结果是:
  • test_data: aa.bbbbbbbbbbbbbbb.cccccccccc.ddddddd.EEEeeeEeeeeEeeeeee.ffffFffffFff
  • rest: INFO

  • 希望得到关于我做错了什么的帮助/解释

    最佳答案

    您正在匹配一系列模式,因此您需要使用它们,否则正则表达式引擎无法到达后续(最右侧)模式部分。
    环视不消耗模式,它们只是检查某个位置的上下文。所以, (?<=\[)是一个永远不会匹配的模式,因为空格不能是 [同时字符。这就是您拥有的模式不起作用的原因。
    您可以使用

    %{DATESTAMP:timestamp} - \[%{DATA:test_data}\] - \[%{DATA:rest}\]
    现在,正则表达式引擎会找到 timestamp模式,那么它会消耗空间+ - +空格,然后是 [字符,然后 test_data , ] - [ , rest部分和一个 ]字符。

    关于regex - GROK 正则表达式捕获组不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67426100/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com