У меня есть данные в файле журнала, и я хочу извлечь строки, которые находятся между двумя фразами «Процесс начался» и «Выполнено», включая начало строки и конца линия.RegEx для извлечения строк между двумя строками в C#
2016-11-28 12:18:59.5286 | 14 | Info | Process Started -ABC *****
....
..
2016-11-28 12:18:59.5286 | 14 | Info | Process Completed -ABC, Status: Failed***
2016-11-28 13:18:59.5286 | 14 | Info | Process Started -DEF
....
..
2016-11-28 13:18:59.5286 | 14 | Info | Process Completed -DEF Status: Passed***
Используя ниже RegEx, я могу извлечь строки, но не начинаются и не заканчиваются линии с заданным совпадением.
Regex r = new Regex("^*?Process Started -"+process.Name+"(.*?)Process Completed: "+process.Name+".*?", RegexOptions.Singleline);
Выше регулярное выражение возвращение как этот
Process Started -ABC *****
....
..
2016-11-28 12:18:59.5286 | 14 | Info | Process Completed
Но мне нужно, как это
2016-11-28 12:18:59.5286 | 14 | Info | Process Started -ABC *****
....
..
2016-11-28 12:18:59.5286 | 14 | Info | Process Completed -ABC, Status: Failed***
Я лично не буду использовать регулярное выражение для этого случая. Я бы читал строки за строкой и оценивал, содержит ли строка «Process Started» и «Process name». Если да, то я бы начал добавлять строки в список, пока не появляюсь по строке, содержащей «Выполненный процесс» и «Имя процесса». –
@ blaze_125, если я не найду решения, я оставлю только эту опцию. Я думал, что RegEx может быть проще и проще. – raj