@ SocialCensus, пример, который вы дали в комментарии к MarkusQ, где вы добавляете «рядом с», не работает с примером, который MarkusQ дал выше, что если мы изменим sam на sam's : (тест, "запятая", bob, ", sam's,", здесь) не имеет соответствия с (,) (? = (?: [^ "'] | [" |'] [ ^ "'] ") $). На самом деле, сама проблема "меня не интересуют одинарные и двойные кавычки", неоднозначна. Вы должны четко понимать, что вы имеете в виду, цитируя либо с "или с". Например, разрешено ли вложение? Если да, то на сколько уровней? Если только 1 вложенный уровень, что происходит с запятой вне внутренней вложенной цитаты, но внутри внешней вложенной цитаты? Вы также должны учитывать, что одиночные кавычки сами по себе случаются как апострофы (то есть, как контрпример, который я привел ранее с Сэмом). Наконец, сделанное вами регулярное выражение на самом деле не обрабатывает одинарные кавычки наравне с двойными кавычками, поскольку предполагает, что последний тип кавычки обязательно является двойной кавычкой - и замена последней двойной кавычки на ['| "] также имеет проблему если текст не содержит правильных кавычек (или если используются апострофы), я полагаю, мы могли бы предположить, что все кавычки правильно очерчены.
Регулярное выражение MarkusQ отвечает на вопрос: найдите все запятые, которые имеют четное число двойных кавычек после него (т. Е. Находятся вне двойных кавычек), и не обращайте внимания на все запятые, которые имеют нечетное число двойных кавычек после него (т. Е. Находятся внутри двойных кавычек) цитаты). Как правило, это то же решение, которое вы, вероятно, хотите, но давайте рассмотрим несколько аномалий. Во-первых, если кто-то пропустит кавычку в конце, то это регулярное выражение находит все неправильные запятые, а не находит нужные или не находит ни одного. Конечно, если двойная кавычка отсутствует, все ставки отменяются, так как может быть неясно, принадлежит ли пропущенная в конце или вместо в начале; однако есть законный случай, когда регулярное выражение может потерпеть неудачу (это вторая «аномалия»). Если вы настраиваете регулярное выражение для перехода по текстовым строкам, то вы должны знать, что цитирование нескольких последовательных абзацев требует, чтобы вы помещали одинарную двойную кавычку в начале каждого абзаца и пропускали кавычку в конце каждого абзаца, за исключением конец самого последнего абзаца. Это означает, что в промежутке между этими абзацами регулярное выражение в некоторых местах будет неудачным, а в других - успешным.
Примеры и краткое обсуждение цитирования абзацев и вложенного цитирования можно найти здесь http://en.wikipedia.org/wiki/Quotation_mark.