Reguläre Ausdrücke



  • Hallo,

    ich habe folgendes allgemeines Muster:
    "Produktname", "Username", "Rating", "Beschreibung"

    Ich möchte per Split die einzelnen Bestandteile haben. Dafür bräuchte ich allerdings Regex und kriegs gerade einfach nicht gebacken. Den das Problem ist, dass das Komma nicht nur als Seperator dient, sondern auch in der Beschreibung enthalten sein kann, z.B.:
    "Staubsauger", "DirtAngel", "4", "Der Tag, an dem ich diesen Gerät erstanden habe, blablabla"

    Hier bräuchte ich eine Regex um die Sachen zwischen den "" zu bekommen. Ein Einfaches \w geht hier leider nicht.

    Vielen Dank //build



  • Sieht nach ganz normalem CSV aus. Gibt in Java Tausendundeine Möglichkeit, um CSV einzulesen, am besten googeln.



  • build schrieb:

    Hier bräuchte ich eine Regex um die Sachen zwischen den "" zu bekommen. Ein Einfaches \w geht hier leider nicht.

    Vielen Dank //build

    Der übliche Weg ist eigentlich /"([^"]*)"/ , oder mit non-greedy qualifier, also /"(.*?)"/ .

    Es könnte hilfreich sein, die genaue Funktionsweise von Scanner anzuschauen.

    Aber nman hat recht, warum das Rad neu erfinden.

    Revision 2: Fehler in den Regex korrigiert - In [c]/"([^"])*"/[/c] war * an der falschen Stelle und in /".*?"/ fehlten die Klammern.



  • @nman: Ist schon ne normale CSV. Es geht aber darum, dass die Kommata nicht nur Werte trennen, sondern ebenfalls im String enthalten sein können.

    Einfachste Lösung war es, normal mit ToSplit("\",\"".ToCharArray()); und beim ersten wie letzten Eintrag, das erste Zeichen rausnehmen.. das ist nicht die schönste Lösung, aber eine annehmbare.


Anmelden zum Antworten