正则表达式:从日志中选择XML消息和时间戳记

时间:2018-11-25 12:05:30

标签: regex graylog nxlog

我要把日志流式传输到nxlog,我需要将xml消息推送到nexlog服务器中,要选择XML消息:

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})(.*)(my sentence 1....|my sentence 2 : [\S+\s+]*>\n)(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})

但是我无法从日志中选择所有XML消息

https://regex101.com/r/iA8qE5/5

2 个答案:

答案 0 :(得分:0)

在正则表达式中,您必须在之后使用)来结束交替:

(Message Picked from the queue....|Response Message :

在字符类中使用+会具有不同的含义,并且会在字面上匹配加号。加号是贪婪的,因此您必须使用问号将其设为非贪婪,以使[\S\s]+不匹配所有行。

更新[\S+\s+]*>\n)

)([\S\s]+?>)\n

您的比赛在第4个捕获组中。

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})(.*)(Message Picked from the queue....|Response Message : )([\S\s]+?>)\n(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3})

Regex demo

不是,如果不需要所有捕获组,也可以省略它们,而只使用第一个捕获组(Demo

答案 1 :(得分:0)

它从起始行,消息和xml捕获日期。使用gms标志Demo

^([\d-\.\s\:]+)\s.*?-\s([\w\s:\.]+)(<\w+.*?)\n\d{4}

仅日期和xml

^([\d-\.\s\:]+)\s.*?(<\w+.*?)\n\d{4}