2017-02-20 17 views
6

Có ai có thể cho tôi biết câu lệnh if có regex trông như thế nào trong logstash không?Logstash if statement with regex example

nỗ lực của tôi:

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

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

Cả trong số đó làm việc.

Những gì tôi có ý định làm là để kiểm tra xem "fieldname" chứa một số nguyên

Trả lời

9

Để kết hợp các câu trả lời khác vào một câu trả lời gắn kết.

Định dạng đầu tiên của bạn có vẻ chính xác, nhưng regex của bạn không làm những gì bạn muốn.

/^[0-9]*$/ trận đấu:

^: đầu dòng

[0-9]*: bất kỳ chữ số 0 hoặc nhiều lần

$: sự kết thúc của dòng

Vì vậy regex của bạn chụp dòng chỉ được tạo thành từ các chữ số. Để khớp trên trường, chỉ cần chứa một hoặc nhiều chữ số ở đâu đó, hãy thử sử dụng /[0-9]+/ hoặc /\d+/ tương đương nhau và mỗi số phù hợp với 1 hoặc nhiều chữ số bất kể phần còn lại của dòng.

Tổng số bạn cần có:

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

Bạn cần regex này (và dấu ngoặc, tôi nghĩ):

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

^ khẳng định vị trí tại bắt đầu của chuỗi

$ khẳng định vị trí ở phần cuối của chuỗi

regexp của bạn chỉ phù hợp với tê er chuỗi, và kiểm tra có chứa một số nguyên cần loại bỏ ^$.

3

Cách đơn giản nhất là để kiểm tra \d

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