Regex, чтобы найти блок текста между 2 строками не работает

1

У меня есть файл csv, в котором есть несколько отчетов.

Макет отчета выглядит следующим образом. Мне нужно вытащить данные для каждого отчета и сохранить его в отдельной таблице.

У меня есть выражение регулярных выражений, которое работает на regexhero.com, но когда я пытаюсь реализовать его в С#, оно не совпадает.

Любые идеи, что я ошибаюсь?

var reg = new Regex("(\"Report: Midwest Sales\")(.*?)(\"Total Records:)");
var match = reg.Matches(csvReport)
"Report: Midwest Sales"

"Order Number", "Total", "Sales Rep"

"000056","$123","Sally"

"000057","$123","Sally"

"000058,"$123","Sally"

"000059","$123","Sally"

"000060","$312","Roger"

"000061","$312","Roger"

"000062","$312","Roger"

"000063","$312","Roger"

"Total Records: 9"

"Report: Midwest Reps"

"Rep Name", "Rep Id", "Manager"

"Sally","1",""

"Roger","2","1"

"Chris","3","1"

"Gus","4","2"

"Total Records: 4"
  • 1
    попробуйте поставить @ перед двойными кавычками строки Regex, это сделает ее дословной строкой - обратные слеши не будут рассматриваться как escape-символы
  • 1
    Также попробуйте derekslager.com/blog/posts/2007/09/…
Показать ещё 4 комментария
Теги:

1 ответ

0

Поскольку это единственный список, вы должны создать соединение с регулярным выражением, которое соответствует каждому из ваших разных типов записей.

((\"Report:([^\"]*"))|(\"Total Records:(.)*\")|([^\n]*))(\n|$)

В функции сопоставимых групп вы будете дифференцировать записи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню