Ну, я не regex wiz, но я уверен, что у них есть ответ на это.
Процедурно это происходит через письмо. Установите переменную, например dontMatch, в FALSE.
Каждый раз, когда вы запускаете цитату, переключите dontMatch.
каждый раз, когда вы запускаете запятую, проверьте dontMatch. Если он ИСТИНА, игнорируйте запятую. Если это ЛОЖЬ, разделите запятую.
Это работает для примера, который вы даете, но логика, которую вы используете для кавычек, принципиально ошибочна - вы должны избегать их или использовать другой разделитель (например, одинарные кавычки) для установки основных котировок, кроме незначительных котировок.
Например,
"a", ""b", ""c", "d"", "e""
даст плохие результаты.
Это может быть исправлено с другим патчем. Вместо того, чтобы просто сохранять истинное ложное значение, вам нужно сопоставить кавычки.
Для сопоставления котировок вы должны знать, что в последний раз видели, что попадает в довольно глубокую парсинговую территорию. Вероятно, в этот момент вы захотите убедиться, что ваш язык хорошо разработан, и если вы можете использовать инструмент компилятора для создания парсера для вас.
-Adam
@ Matt: Не каждый родной Англоговорящий. Не знаю, что вызвало редактирование мании. Я вернул его обратно к версии, которая отражает первоначальное намерение, поскольку значение вопроса начало ухудшаться. – Tomalak 2008-11-25 08:33:49
@xyz: Извините за анархические изменения, которые были внесены в ваш вопрос без уважительной причины. Надеюсь, это подошло к концу. – Tomalak 2008-11-25 08:38:27
Ваш CSV недействителен, он должен быть "a", "" "b" "," "x" "," "y" "", "c" – dalle 2008-11-25 09:12:55