Regex для извлечения содержимого из каждой строки файла журнала, выводимого от _m до конца строки
Формат строки журнала:
Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.
Я хочу извлечь из '_m'
до конца строки, удаляя '_'
перед 'm'
,
Новое в регулярных выражениях...
Спасибо!
3 ответа
Решение
Если ваш инструмент / языковая поддержка оглядываются назад, это работает: соответствует первому _m
до EOL
, также игнорировать ведущие _
(?<=_)m.*
проверить с помощью grep:
kent$ echo "Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx."|grep -Po '(?<=_)m.*'
mxxxxxmmxx [XXX xxxx.
Это довольно просто:
Этот пример написан на C#, но регулярное выражение довольно общее и, вероятно, будет работать где угодно:
Regex regex = new Regex(@"_(m.*)"); // If you look for _M the regex should be @"_(M.*)"
Match match = regex.Match(logLine);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
Надеюсь, это поможет вам в ваших поисках.