Используйте scala fastparse для удаления заключенных в кавычки, но сохраняя остальные - PullRequest
1 голос
/ 07 февраля 2020

Я хочу использовать fastparse для преобразования следующей строки \"Escaped quote\"\"\" в Escaped quote\". У меня есть следующий код, который почти работает.

def escapedQuote[_: P]: P[Unit] = P("\"")
def unquotedColumn[_: P] = P(escapedQuote ~ ((!escapedQuote ~ AnyChar.!) | escapedQuote ~ escapedQuote.!).rep ~ escapedQuote ~ End)
val result = parse(input, unquotedColumn(_))

Я получаю результат ArrayBuffer(E, s, c, a, p, e, d, , q, u, o, t, e, "), который очень близок к тому, что я хочу, однако я хочу получить результат в строке.

Однако, когда я пытаюсь сделать следующее (добавляя.! После повторения),

def unquotedColumn[_: P] = P(escapedQuote ~ ((!escapedQuote ~ AnyChar.!) | escapedQuote ~ escapedQuote.!).rep.! ~ escapedQuote ~ End)

я получаю результат Escaped quote\"\". Появилась дополнительная экранированная цитата.

Я хочу использовать мой unquotedColumn в других парсерах.

Есть идеи, как исправить мой код?

...