【问题标题】:Regex pattern match failure正则表达式模式匹配失败
【发布时间】:2019-07-06 23:26:05
【问题描述】:

我无法匹配 logstash grok 中的模式。这是我的数据:

some words key[value]some words in between key[value] key[value]....some more words

我想匹配一个模式

key[value] key[value]

即两个连续的键值之间有空格

我尝试使用(?=\w+[.*])\s(?=\w+[.*]),但它不起作用。

我得到的是第一个 key[value] 而不是 key[value] key[value] 的整行。

【问题讨论】:

  • 举个例子,我们可以帮助你。
  • \w+\[\w+\]\s\w+\[\w+\]?演示:regex101.com/r/u3O82v/1
  • (?=\w+[.*]\s\w+[.*]) 当我试图向前看时没有工作
  • 你需要对[这个字符进行转义,因为它有一个特殊的含义,即character class[]
  • 是的,我做到了。不知何故,它没有在这里捕获。另外,我需要在方括号之间使用 .* ,因为值也将包含非单词字符。

标签: regex kibana logstash-grok grok


【解决方案1】:

我猜积极的前瞻是不必要的,这个表达式可能有效:

[A-Za-z0-9]+\[[A-Za-z0-9]+\]\s[A-Za-z0-9]+\[[A-Za-z0-9]+\]

DEMO 1

或者:

(?<=[^a-z])\s(\S+\[[^]]+\])

DEMO 2

【讨论】:

    【解决方案2】:
    \S+\[[^\[]+\]
    

    表示任何非空格字符后跟[,后跟除[ 之外的任何字符,重复多次并后跟]

    Demo

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多