2017-02-20 19 views
6

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

Мои попытки:

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

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

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

То, что я собираюсь сделать, это проверить, если «имя_поль» содержит целое число

ответ

9

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

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

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

^: начало линии

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

$: конец линии

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

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

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

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

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

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

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

Ваше регулярное выражение просто соответствует онемели er string и check содержит целочисленную необходимость удаления ^ и $.

3

Самый простой способ, чтобы проверить \d

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