Java: Einen String mit Regex teilen

8

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:

%Vor%

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%     
rvd 07.03.2016, 11:45
quelle

4 Antworten

4

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

    
Enteleform 07.03.2016 11:59
quelle
2

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%     
Wiktor Stribiżew 07.03.2016 12:16
quelle
1

Ich würde mit dieser Art von Workaround versuchen:

%Vor%

Ausgabe:

%Vor%     
m.cekiera 09.03.2016 12:42
quelle
0

Mein Vorschlag:

%Vor%     
Мотя 07.03.2016 12:02
quelle

Tags und Links