Инструкция Logstash if с примером regex

может кто-нибудь показать мне, что такое if оператор с регулярным выражением выглядит как в logstash?

мои попытки:

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

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

ни один из которых не работает.

что я намерен сделать, это проверить, содержит ли" fieldname " целое число

4 ответов


объединить другие ответы в связный ответ.

ваш первый формат выглядит правильно, но ваше регулярное выражение не делает то, что вы хотите.

/^[0-9]*$/ матчи:

^: начало строки

[0-9]*: любая цифра 0 или более раз

$ - конец строки

таким образом, ваше регулярное выражение захватывает строки, состоящие исключительно из цифр. Чтобы соответствовать на поле, просто содержащем одну или несколько цифр где-то попробуйте использовать /[0-9]+/ или /\d+/ которые эквивалентны и каждый соответствует 1 или более цифр независимо от остальной части строки.

в общей сложности вы должны иметь:

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

^ утверждает позицию в начале строки

$ утверждает позицию в конце строки

ваше регулярное выражение просто соответствует числовой строке, а проверка содержит целое число, которое нужно удалить ^ и $.


самый простой способ проверить для \d

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

вам нужно это регулярное выражение (и скобки, я думаю):

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