Regex: выберите сообщения XML и метку времени из журнала - PullRequest
0 голосов
/ 25 ноября 2018

Я собираюсь транслировать логи в nxlog, мне нужно отправить XML-сообщения на сервер неклогов, чтобы выбрать 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 голосов
/ 25 ноября 2018

это захват даты из начальной строки, сообщения и xml.он использует gms флаг, Демо

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

дата и только xml

^([\d-\.\s\:]+)\s.*?(<\w+.*?)\n\d{4}
0 голосов
/ 25 ноября 2018

В вашем регулярном выражении вы должны закрыть чередование, используя ) после:

(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

Не так, если вам не нужны всегруппы захвата, вы также можете опустить их и взять только первую группу захвата ( Демо )

...