Ich suche nach einem regulären Ausdruck mit preg_match_all in PHP 5, die es mir erlauben würde, eine Zeichenfolge durch Kommas zu trennen, solange die Kommas nicht existieren in einfachen Anführungszeichen, die es ermöglichen, einzelne Anführungszeichen zu umgehen. Beispieldaten wäre:REGEX: Aufteilen durch Kommas, die nicht in einfache Anführungszeichen sind, die escaped Anführungszeichen erlaubt
(some_array, 'some, string goes here','another_string','this string may contain "double quotes" but, it can\'t split, on escaped single quotes', anonquotedstring, 83448545, 1210597346 + '000', 1241722133 + '000')
Dies sollte eine Übereinstimmung erzeugen, die wie folgt aussieht:
(some_array
'some, string goes here'
'another_string'
'this string may contain "double quotes" but, it can\'t split, on escaped single quotes'
anonquotedstring
83448545
1210597346 + '000'
1241722133 + '000')
ich viele, viele reguläre Ausdrücke versucht haben ... Meine aktuelle sieht wie folgt aus, obwohl es doesn nicht 100% korrekt. (Es spaltet noch einige Kommas in einfache Anführungszeichen.)
"/'(.*?)(?<!(?<!\\\)\\\)'|[^,]+/"
* Dies kann * getan werden, aber es ist eher härter als die meisten Leute sich vorstellen; sieht aus, als würdest du jetzt ein Gefühl für die Schwierigkeit bekommen. Gibt es da wirklich keine Bibliotheksfunktion, die das in PHP erledigt? Es gibt in Perl. Wenn Sie bis dahin keine gute Antwort erhalten, kann ich versuchen, den Regex später für Sie zusammenzustellen. – tchrist