Wie csv Datei mit Kommas in den Daten per RegExp verarbeiten?
Hallo,
ich möchte CSV Dateien mit Regulären Ausdrücken verarbeiten.
Hauptsächlich verlasse ich mich darauf, dass nach dem x.ten Komma, die x.te Spalte ist.
Das klappt aber nicht immer.
Die Herausfoderung ist nun, dass es auch Spalten im CSV gibt, die selbst (ein oder mehrere) Kommas enthalten und mit " maskiert sind.
Ein
/^[^,]*,[^,]*,Treffer/
findet so meistens das Wort "Treffer" in der 3. Spalte.
Aber nicht, wenn die Zeile so aussähe:
123,"dies,das",Treffer,weiter
da hier das Komma im Text dazwischenfunkt.
Ich habe nun schon mit lookaheads und lookbehinds probiert, Kommas zwischen Hochkommas einfach durch Punkte zu ersetzen:
s/((?<=,")[^",]*),([^",]*(?=",))/\$1.\$2/g
das klappt zwar gut für genau 1 Komma, nicht aber für 2+ Kommas in einem Hochkomma-Text.
Hat jemand sowas schonmal gemacht, und kann mir ggf. eine funktionierende RegExp nennen?
viele Grüße, Farbauti.
ich möchte CSV Dateien mit Regulären Ausdrücken verarbeiten.
Hauptsächlich verlasse ich mich darauf, dass nach dem x.ten Komma, die x.te Spalte ist.
Das klappt aber nicht immer.
Die Herausfoderung ist nun, dass es auch Spalten im CSV gibt, die selbst (ein oder mehrere) Kommas enthalten und mit " maskiert sind.
Ein
/^[^,]*,[^,]*,Treffer/
findet so meistens das Wort "Treffer" in der 3. Spalte.
Aber nicht, wenn die Zeile so aussähe:
123,"dies,das",Treffer,weiter
da hier das Komma im Text dazwischenfunkt.
Ich habe nun schon mit lookaheads und lookbehinds probiert, Kommas zwischen Hochkommas einfach durch Punkte zu ersetzen:
s/((?<=,")[^",]*),([^",]*(?=",))/\$1.\$2/g
das klappt zwar gut für genau 1 Komma, nicht aber für 2+ Kommas in einem Hochkomma-Text.
Hat jemand sowas schonmal gemacht, und kann mir ggf. eine funktionierende RegExp nennen?
viele Grüße, Farbauti.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188264
Url: https://administrator.de/contentid/188264
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar