居然是你

grok正则规则中使用?匹配可能出现的字段时的问题

Logstash | 作者 wangxinrong | 发布于2021年05月25日 | 阅读数:1470

以下两行文本用 xxx:(?<xxx>(\w)+) 都可以解析到字段名为xxx,值为123
xxx:123
yyy:321,xxx:123
 
现在我希望这个xxx:123存在的时候解析到xxx字段,不存在时就不解析,我写成 (xxx:(?<xxx>(\w)+))?,结果变成了
yyy:321,xxx:123  解析不到xxx
xxx:123  能解析到xxx
 
 
也就是说当我不加()?的时候,不管xxx:123前面有内容还是没内容,都可以解析到xxx字段
当我在原有解析规则上加了()?的时候,xxx:123前面没有内容时能匹配到,有内容时就匹配不到
这是什么原因呢?
已邀请:

sdx

赞同来自:

加判断语句

要回复问题请先登录注册