Мне нужно проанализировать файл в формате TSV (значения, разделенные табуляцией). Я использую регулярное выражение, чтобы разбить файл на каждую строку, но я не могу найти подходящее для анализа каждой строки.
А пока я придумал это:
(?<g>("[^"]+")+|[^\t]+)
Но это не работает, если элемент в строке содержит более 2 последовательных двойных кавычек.
Вот как форматируется файл: каждый элемент отделяется табуляцией. Если элемент содержит вкладку, он заключен в двойные кавычки. Если элемент содержит двойную кавычку, он удваивается. Но иногда элемент содержит 4 последовательных двойных кавычки, и приведенное выше регулярное выражение разделяет элемент на 2 разных.
Примеры:
item1ok "item" "2" "OK"
правильно разделен на 2 элемента: item1ok и item "2" ok (после обрезки ненужных кавычек), но:
item1oK "item" "" "2oK"
разбивается на 3 элемента: item1ok , item и "2ok (после повторной обрезки).
Кто-нибудь знает, как заставить регулярное выражение соответствовать этому случаю? Или есть другое решение просто разобрать TSV? (Я делаю это в C #).