Meinen Eingang:Finden Sie alle CR oder LF (einfach eingeben) zwischen doppelten Anführungszeichen in regex
2, Indien, "i jetzt anmelden und
bitte
mich leiten, danke", + 91547854221
Meine Anforderung ist, finde alle CR oder LF (einfach eingeben) zwischen "....." in Einzelaufnahme.
Erforderliche Leistung:
2, Indien, "ich heute kommen, und bitte leite mich, danke", + 91547854221
Ich habe Regex für diese. aber es wird nur ein CR oder LF gleichzeitig finden, aber ich möchte alle CR LF in Einzelaufnahme, aber nicht in Mehrfachaufnahme finden.
Meine regex:
(\ ") (\,?!) ([^" (\ N | \ r) ([^ "] \?") ----] ?) > ($ 3 CR oder LF, i mit Platz ersetzt)
ersetzen: 1 $ $ 2 4
$ Was iam bekommen:
2, Indien, "ich heute kommen, und bitte
mich leiten Danke ", + 91547854221
Sie müssen dies in ein paar Schritten tun. Der erste Schritt besteht darin, eine gerade Anzahl von doppelten Anführungszeichen zu validieren, bevor Sie mit dem Ersetzungsschritt beginnen, z. wenn es mit '^ [^"] * (?: "[^"] * "[^"] *) * $ 'besteht, dann müssen Sie alle zitierten Einträge finden und blind alle CRLFs ersetzen. Sie können einen Callback oder verwenden Benutze einfach die Suche und remainiere eine neue Zeichenkette.Wenn eine globale Ersetzung durch Callback erfolgt, benutze einfach '(" [^ "] *") ', dann im Callback, blind '' '' '\' '' '' mit nichts, dann zurück die Ergebnisse. Es ist etwas komplizierter, wenn doppelte Anführungszeichen in doppelte Anführungszeichen gesetzt werden können. – sln
ist es schwer für mich zu verstehen, kannst du es bitte klar mit jedem einzelnen Schritt erklären. – kiran
Ich habe es tatsächlich klar in meinem Kommentar erklärt, aber ich werde es nochmal versuchen. ** Schritt 1: ** Validiere eine gerade Anzahl von Anführungszeichen in der Datei. Eine einfache, wenn suche '^ [^ "] * (?:" [^ "] *" [^ "] *) * $' gehe dann zum nächsten Schritt. ** Schritt 2: ** Benutze einen _nested_ replace Das äußere replace '(" [^ "] *") 'entfernt bei jeder Übereinstimmung _all_ CR oder LF's von $ 1 (inneres Ersetzen) und gibt dann diese Zeichenkette an die äußere Ersetzung zurück. ** Dies kann auch erreicht werden, indem man die csv-Zeichenfolge von Grund auf neu schreibt: ** Finde in einer Schleife global '([^"] *) ("[^"] * "| $)'. Fügen Sie $ 1 an die neue Zeichenfolge an. Ersetze blind alle CR, LF's von $ 2, füge das an die neue Zeichenkette an. – sln