Ich muss eine Zeichenfolge mit Komma (,) als Trennzeichen trennen und jedes Komma ignorieren, das in Anführungszeichen steht (")
fieldSeparator : ,
fieldGrouper : "
Die zu teilende Zeichenfolge ist: "1","2",3,"4,5"
Ich kann es wie folgt erreichen:
Ausgabe:
%Vor%Nun besteht die Herausforderung darin, dass der fieldGroup (") nicht Teil der geteilten Tokens sein sollte. Ich kann die Regex dafür nicht herausfinden.
Die erwartete Ausgabe der Teilung ist:
%Vor%Aktualisierung:
String[] tokens = record.split( "(,*\",*\"*)" );
Ergebnis:
Anfangslösung:
(funktioniert nicht @.split
method)Dieses RexEx-Muster isoliert die gewünschten Abschnitte:
(?:\")(.*?)(?:\")
Es verwendet nicht-einfangende Gruppen, um die Paare von entgangenen Anführungszeichen zu isolieren, und eine einfangende Gruppe, um alles dazwischen zu isolieren.
Schau es dir hier an: Live-Demo
Mein Vorschlag:
%Vor% Weitere Informationen finden Sie in der Regex-Demo . Er passt "..."
wie Zeichenfolgen an und erfasst in Gruppe 1 nur das, was zwischen den Anführungszeichen steht, und passt dann in Zeichenfolgen der Gruppe 2 außer ,
am Anfang einer Zeichenfolge oder nach einem Komma ab.
Hier ist ein Java-Beispielcode :
%Vor%