Cóż, nie jestem kretynem regex, ale jestem pewien, że mają na to odpowiedź.
Proceduralnie przechodzi przez list po literze. Ustaw zmienną, powiedzmy dontMatch, na FALSE.
Za każdym razem, gdy napotkasz cytat, przełącz dontMatch.
za każdym razem, gdy wpadniesz na przecinek, sprawdź dontMatch. Jeśli jest to PRAWDA, zignoruj przecinek. Jeśli FALSE, podziel na przecinek.
Działa to w podanym przykładzie, ale logika, której używasz w cudzysłowach, jest z gruntu błędna - musisz uciec przed nimi lub użyć innego ogranicznika (na przykład pojedyncze cudzysłowy), aby ustawić ważne cytaty poza drobnymi cytatami.
Przykładowo
"a", ""b", ""c", "d"", "e""
przyniesie złe wyniki.
Można to naprawić za pomocą innej łaty. Zamiast po prostu zachować prawdziwy fałsz, musisz dopasować wycenę.
Aby dopasować oferty, musisz wiedzieć, co było ostatnio widziane, co dostaje się na dość głęboki obszar analizowania. Zapewne w tym momencie będziesz chciał się upewnić, że twój język jest dobrze zaprojektowany, a jeśli tak, to możesz użyć narzędzia kompilatora, aby utworzyć parser.
-Adam
@Matt: Nie każdy jest rodowitym Osoba mówiąca po angielsku. Nie wiem, co spowodowało mania redagowania. Przywróciłem go do wersji odzwierciedlającej pierwotną intencję, ponieważ znaczenie pytania zaczęło się pogarszać. – Tomalak
@xyz: Przepraszamy za anarchiczne zmiany, które zostały wprowadzone do Twojego pytania bez powodu. Mam nadzieję, że teraz dobiegło końca. – Tomalak
Twój CSV jest nieprawidłowy, powinien być "a", "" "b" "," "x" "," "y" "", "c" – dalle