Это очевидный случай для анализатора CSV, поэтому вы должны использовать собственные возможности синтаксического анализа CSV .NET или решение cdhowie.
Чисто для вашей информации, а , а не , предназначенный в качестве работоспособного решения, вот то, что вы должны пройти, используя регулярные выражения с Regex.Split()
:
Вы можете использовать регулярное выражение (, пожалуйста, не надо! )
(?<=^(?:[^"]*"[^"]*")*[^"]*) # assert that there is an even number of quotes before...
\s*,\s* # the comma to be split on...
(?=(?:[^"]*"[^"]*")*[^"]*$) # as well as after the comma.
если ваши строки в кавычках никогда не содержат экранированных кавычек, и вы не против того, чтобы сами цитаты становились частью матча.
Это ужасно неэффективно, боль в чтении и отладке, работает только в .NET, и не работает на экранированных кавычках (по крайней мере, если вы не используете ""
для экранирования одиночной кавычки). Конечно, регулярное выражение можно изменить, чтобы справиться и с этим, но тогда это будет совершенно ужасно.