Я хочу разобрать разделитель Отдельные значения с цитирующими символами и escape для цитирования.Как разобрать разделимое значение разделителя с указанными символами и выйти
Например: a, "b""c""", d
-> Ожидается стричь как три колонки (a
), (b"C"
), (d
), считая запятую в качестве разделителя, цитата, как процитировать характер и избежать характера.
Я хочу также поддерживать несколько разделителей и охватывающих символов.
Например: a, "b""c"""|d
-> Ожидается, что у вас будет три столбца, если мы используем как запятую, так и |
, используемые в качестве разделителя.
Другой пример: a, <b\<c\>>|d
-> Ожидаемое разобрать как три колонки, если мы используем как запятая и |
как разделители, <
как левый корпус >
в правом корпусе и \
как побег.
Возможно ли создать комбинатор парсера с использованием JParsec?
Проведя некоторое время с API, я ожидал, что ниже код работает, но он не работает, как ожидалось, для анализа вышеприведенного примера.
Parser<?> quote_content = Scanners.notAmong(rightEnclose).many();
Parser<?> quoted = Scanners.nestableBlockComment(Scanners.among(leftEnclose),
Scanners.among(rightEnclose), quote_content);
Parser<?> unquoted = Scanners.notAmong(delimiter + leftEnclose);
Parser<?> chunk = Parsers.or(escapedSequence(), unquoted);
Parser<?> all = chunk().many1().source().sepBy(Scanners.among(delimiter));
Просьба предложить, используя JParsec, есть ли лучшая альтернатива?
попробуйте использовать csvReader –
Начал искать в JParsec для поддержки сценариев, таких как множественные разделители - либо запятая, либо | может использоваться как разделитель. – Satya
Не можете добавить код для 'escapeSequence(), который отсутствует в вашем примере. Я дам ему попробовать сегодня (я являюсь поддерживающим jparsec ...) – insitu