Ich möchte jede Instanz von Text in einer durch Kommas getrennten Liste abgleichen. Dazu wird der folgende reguläre Ausdruck funktioniert super:Übereinstimmende Elemente in einer durch Kommas getrennten Liste, die nicht von einfachen oder doppelten Anführungszeichen umgeben sind
/[^,]+/g
Das Problem ist, dass ich alle Kommas ignorieren möchte, die in einfachen oder doppelten Anführungszeichen enthalten sind, und ich bin nicht sicher, wie der obige Selektor erweitert werden kann, um mir das zu ermöglichen.
Hier ist ein Beispiel string:
abcd, efgh, ij"k,l", mnop, 'q,rs't
ich entweder die fünf Textteile fehlen bin passen oder Spiel der vier relevanten Kommas (so kann ich die Daten retreive mit split()
statt match()
):
abcd
efgh
ij"k,l"
mnop
'q,rs't
Oder:
abcd, efgh, ij"k,l", mnop, 'q,rs't
^ ^ ^ ^
Wie kann ich das tun?
drei relevante Fragen existieren, aber keiner von ihnen bieten für sowohl '
und "
in JavaScript:
- Regex for splitting a string using space when not surrounded by single or double quotes - Java-Lösung scheint nicht in JavaScript.
- A regex to match a comma that isn't surrounded by quotes - passt nur auf
"
- Alternative to regex: match all instances not inside quotes - passt nur auf
"
@ WiktorStribiżew, das fehlschlägt, wenn ein Raum in Anführungszeichen ein Komma nächsten ist (https://regex101.com/r/cW5hM0/2). –
@ WiktorStribiżew, dass man alles außerhalb von Anführungszeichen als eine andere Übereinstimmung betrachtet, unabhängig von einem Komma: https://regex101.com/r/cW5hM0/4 (beachten Sie das 'k' Zeichen darin). –
([^,] + ". *" [^,]) + | ([^,]? '. *' [^,]) + | ([^,] +)/G, das sollte funktionieren und erfassen die Gruppen, die Sie möchten – SamyQc