Regex для неправильно отформатированного CSV-файла, разделенного каналом - PullRequest
0 голосов
/ 23 марта 2019

Я ищу регулярное выражение, чтобы идентифицировать вхождения неэкранированных символов в двойных кавычках в CSV-файле с разделителями-пробелами. То есть файл разделен пробелом, и каждое поле заключено в двойные кавычки, но некоторые поля содержат одинарные символы двойных кавычек, которые следует экранировать дополнительными двойными кавычками для соответствия RFC4180.
То есть

"Поле1" | "Поле 2" "текст в тексте" "" | "правильный"
"Поле1" | "Поле 2 "текст в тексте" "|" неверно "

потому что в первой строке одна двойная кавычка была правильно экранирована другим символом двойной кавычки.

Я ищу тест, чтобы найти неправильно экранированные двойные кавычки

Я могу найти двойные кавычки, которым не предшествует труба с [^|]\" и я могу найти двойные кавычки, за которыми не следует труба с \"[^|]
Но вот где я застрял

Найти двойные кавычки, которым не предшествует труба И, за которыми не следует трубка И, за которыми не следует или не следует двойная кавычка

1 Ответ

0 голосов
/ 23 марта 2019

Это регулярное выражение должно выполнять работу, предназначенную

(?<!^|\[|"\])"(?!\[|"\]|$)

По сути, он будет искать и искать что-либо, кроме ^ (начало строки), | или ".

Он будет делать то же самое вперед, но вместо начала строки будет проверять конец строки $

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...