gpt4 book ai didi

regex - Grok - 解析可选字段

转载 作者:行者123 更新时间:2023-12-01 09:20:10 29 4
gpt4 key购买 nike

我有来自 kafka 的数据,我想将它们发送到 ElasticSearch。我有一个这样的带有标签的日志:

<TOTO><ID_APPLICATION>APPLI_A|PRF|ENV_1|00</ID_APPLICATION><TN>3</TN></TOTO>

我试图用 grok 解析它使用 grok 调试器:
\<ID_APPLICATION\>%{WORD:APPLICATION}\|%{WORD:PROFIL}\|%{WORD:ENV}\|%{WORD:CODE}\</ID_APPLICATION\>\<TN\>%{NUMBER:TN}\</TN\>

它有效,但有时日志有一个像这样的新字段(带有标签 <TP> 的字段):
<TOTO><ID_APPLICATION>APPLI_A|PRF|ENV_1|00</ID_APPLICATION><TN>3</TN><TP>new</TP></TOTO>

我想得到带有这个字段(TP 标签)的行和不带的行。我怎样才能做到这一点?

最佳答案

如果您有一个可选字段,您可以将它与一个可选的命名捕获组匹配:

(?:<TP>%{WORD:TP}</TP>)?
^^^ ^

非捕获组在内存中不保存任何子匹配项,仅用于分组, ?量词匹配 1 次或 0 次(=可选)。它将创建一个 TP具有 word 类型值的字段。如果该字段不存在,则值为 null .

因此,整个模式将如下所示:
<ID_APPLICATION>%{WORD:APPLICATION}\|%{WORD:PROFIL}\|%{WORD:ENV}\|%{WORD:CODE}</ID_APPLICATION><TN>%{NUMBER:TN}</TN>(?:<TP>%{WORD:TP}</TP>)?

关于regex - Grok - 解析可选字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747235/

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