Text mithilfe von Kommas unter Beibehaltung von Anführungszeichen aufteilen
Beim Parsen von durch Kommas getrenntem Text ist es wichtig, mit Situationen umzugehen, in denen Kommas in Teilzeichenfolgen in Anführungszeichen erscheinen. wie zum Beispiel dieses Beispiel:
123,test,444,"don't split, this",more test,1
Teilen Sie diese Zeichenfolge mithilfe von in Kommas auf Die Standardmethode String.split(",") ergibt:
123 test 444 "don't split this" more test 1
Wie Sie sehen können, wird das Komma im Zitat „Don't split, this“ fälschlicherweise als Trennzeichen interpretiert.
Um dieses Problem anzugehen, ist ein ausgefeilterer Ansatz erforderlich. In diesem Fall können wir einen regulären Ausdruck verwenden, um die Zeichenfolge in Kommas aufzuteilen, denen keine gerade Anzahl doppelter Anführungszeichen folgt. Dadurch wird sichergestellt, dass Kommas in Teilzeichenfolgen in Anführungszeichen nicht mit Trennzeichen verwechselt werden.
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Dieser reguläre Ausdruck verwendet die folgende Logik:
(?=): Look-ahead Behauptung, die Folgendes sicherstellt:
Mit anderen Worten: Dieser Look-Ahead prüft, ob auf das aktuelle Komma eine gerade Anzahl doppelter Anführungszeichen und das Ende der Zeichenfolge If folgt Wenn dies der Fall ist, bedeutet dies, dass das Komma nicht in einem Teilstring in Anführungszeichen steht und als Trennzeichen betrachtet werden kann.
Sie können auch eine vereinfachte Version des regulären Ausdrucks verwenden:
str.split("(?x) , (?= (?: [^\"]* \" [^\"]* \" )* [^\"]* $ )");
In dieser Version wird der Modifikator (?x) verwendet, um die Lesbarkeit des regulären Ausdrucks zu verbessern, indem Leerzeichen ignoriert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennten Text unter Beibehaltung von Anführungszeichen aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!