Найти персонажа на основе позиции и сопоставить все после в регулярных выражениях и logstash - PullRequest
0 голосов
/ 20 февраля 2020

Это моя строка:

msg: обнаружено вредоносное ПО / вирус - Rtf.Exploit.CVE_2017_11882-6584355-0: Сообщение отклонено для доставки: Объявление: Завтрашний день

Строка выше является строкой журнала. Я хочу найти 3-е двоеточие и сопоставить все после него. Announcement: Holiday Tomorrow - это заголовок темы, поэтому у меня может быть двоеточие или нет.

Я пробовал это до сих пор

[^:]+$     // Holiday Tomorrow
(?<=:).*$  //  Malware/Virus detected - Rtf.Exploit.CVE_2017_11882-6584355-0:Message denied for delivery:Announcement: Holiday Tomorrow"

Я буду использовать регулярное выражение в моей конфигурации logsta sh .

grok {

    match {
        "msg" => "(regex here)%{GREEDYDATA:subject}"
    }

}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Отказался от регулярных выражений в logsta sh для этого конкретного журнала. Вместо этого я изменил свой log / String так, чтобы вместо него была часть "Subject -". поэтому logsta sh config может быть простым. Из этого

msg: обнаружено вредоносное ПО / вирус - Rtf.Exploit.CVE_2017_11882-6584355-0: Сообщение отклонено для доставки: Тема - Объявление: Завтрашний день

К этому

msg: обнаружено вредоносное ПО / вирус - Rtf.Exploit.CVE_2017_11882-6584355-0: Сообщение отклонено для доставки: Тема - Объявление: Завтрашний день

grok {

 match {

 "msg" => "Subject - %{GREEDYDATA:headerSubject}"

 }

}
0 голосов
/ 20 февраля 2020

Попробуйте (но я ничего не знаю о lagsta sh):

(?:.+?:){3}(.*) группа захвата 1 будет иметь то, что вы хотите

Пропустить 3 .+: ' и захватить остальные.

https://regex101.com/r/p2jodw/3

...