使用正则表达式示例的logstash if语句

时间:2017-02-20 10:14:34

标签: regex logstash

任何人都可以告诉我在logstash中带有正则表达式的if语句是什么样的吗?

我的尝试:

if [fieldname] =~ /^[0-9]*$/

if [fieldname] =~ "^[0-9]*$"

两者都不起作用。

我打算做的是检查" fieldname"包含一个整数

5 个答案:

答案 0 :(得分:13)

将其他答案合并为一个有凝聚力的答案。

您的第一种格式看起来是正确的,但您的正则表达式并不是您想要的。

/^[0-9]*$/匹配:

^:行的开头

[0-9]*:任意数字0次或以上

$:行尾

因此,你的正则表达式捕获专门由数字组成的行。要在仅包含一个或多个数字的字段上进行匹配,请尝试使用等效的/[0-9]+//\d+/,并且每个数字都匹配1位或更多位数,而不管该行的其余部分。

总的来说你应该:

if [fieldname] =~ /\d+/ {
   # do stuff
}

答案 1 :(得分:3)

^在字符串

的开头断言位置

$在字符串

的末尾断言位置

您的正则表达式与数字字符串匹配,并且检查包含整数,需要删除^$

答案 2 :(得分:3)

最简单的方法是检查\d

if [fieldname] =~ /\d+/ {
   ...
}

答案 3 :(得分:1)

您的第一种格式有效(在撰写本文时适用于我)。

在下面的摘录中检查当前的logstash版本,并在匹配时注意输出中存在的Header1 Header2 01/09/2018 01/10/2018 ABCDEF PP 529666 110735 GHIJKL CC 720988 256444 字段。正如预期的那样,空字段也可以匹配,但是否则它是完美的。

我建议您使用简短的stdin-stdout配置来测试内容。 Logstash和Elastic的东西很棒,但是大多数情况下,经常在文档中没有适当讨论极端情况。由于我们都被吸引,他们开发代码的速度比文档更快。

uuid

答案 4 :(得分:0)

你需要这个正则表达式(和括号,我认为):

if ([fieldname] =~ /^[0-9]+$/)