2016-08-03 4 views
1

Ich bin mit diesem regexregex: wie zuletzt Übereinstimmen ‚‘ in string ‚Textteil eines, Textteil zwei, Textteil drei‘

/(?![""])(,)(?![""])/g 

alle Kommas in meinem gegebenen Komma getrenntes Zeichenfolge Übereinstimmen zwischen den " ".

"this is a text","text part one, text part two, text part three,","another text","more text", 

Das Komma nach ‚drei‘ nicht abgestimmt ist ... Vielen Dank für alle nützliche Hinweise!

+1

Die angegebene Regex Sie voran immer nicht wirklich tun, was beschreiben. Während der erste Lookahead sinnlos ist, wird der Regex im zweiten Fall fehlschlagen, da direkt auf das Komma "" folgt. Abgesehen davon fehlt der Frage viel Detail, beginnend mit der verwendeten Sprache. –

+1

Entschuldigung - Ich habe versucht, ein präziseres Beispiel zu geben: Ich habe eine Zeichenfolge aus kommagetrennten Teilen, die in "" eingeschlossen sind, und ich möchte alle Kommas in allen umschlossenen Teilen abgleichen ... Ich teste das in regex101. com ... https://regex101.com/r/wC5tR6/1 – Kai

+0

Wie bekommt man den Text? Weil es so aussieht, als gäbe es da ein paar schlechte Sachen. –

Antwort

0

Dies könnte wahrscheinlich mit einer Art Lookahead besser gemacht werden, aber da ich nicht sicher bin, was genau Sie suchen, werde ich diese Ideen da draußen werfen.

Geladen Ihre Zeichenfolge in eine Testdatei "testtxt" und lief einige Perl-Einzeiler darauf herumspielen. Ich benutzte Substitution, um die Matches zu demonstrieren.

perl -ple 's/,(")/$1/g' testtxt 
"text part one, text part two, text part three" 

innerhalb der Anführungszeichen aller Kommata loszuwerden:

nur um das letzte Komma loszuwerden

perl -ple 's/,//g' testtxt 
"text part one text part two text part three" 

alles abzustreifen, aber die Kommas in der Zeichenfolge:

perl -ple 's/[^,]//g' testtxt 
,,, 
0

Ein Komma erscheint in einem Text nur nach Wort (e), so dass eine mögliche Regex sein könnte:

/\w+(,)/g 

Es passt eins zu N Wörtern und fängt das Komma nach ihnen ein. verfügbar Ergebnis hier: https://regex101.com/r/vJ0hY5/1

0

können Sie regex verwenden wie: /\w+(,)(?=\")/g

Above regex ' von word und gefolgt von "

Demo and Explaination

Verwandte Themen