2016-04-03 2 views
0

Ich habe versucht gsub ("[\ r \ n] +", "\ r \ n", textDoc) aber es scheint zu behandle \ r und \ n einzeln und nicht als einzelne Saite?R - Regex - Ersetzen mehrere r n (CRLF) mit einem r n

EDIT -

"This is a line! It ends with a CRLF!\r\n 

\r\n 

\r\n 

There is more stuff down here! I want it directly below the other stuff! Get rid of those two blank lines! Actually, ANYTIME I have blank lines, lets remove them!\r\n" 
+1

Mehr Klarheit in dieser Frage wird benötigt. –

+0

In einer Beispielzeichenfolge hinzugefügt. – Jibril

Antwort

2

[\r\n]+ verwendet eine char-Klasse mit []. So funktioniert der Char-Unterricht.

Sie wollen () für eine Capture-Gruppe: (\r\n)+

Edit:

Es gab einige Probleme mit dieser Umsetzung, da sie eine zusätzliche \r wurde eingeführt wird.

Nach vielen Kommentaren vermutete ich, dass der Ersatz nur \n sein sollte, und fügte eine \r\n (wie vorgesehen) hinzu.

Ich bin nicht ganz sicher, warum dies geschieht, aber ich glaube, dass irgendwo entlang der Linie, systemübergreifende Kompatibilität zu gewährleisten, \n Karten \r\n, so \r\n Karten \r\r\n.

+0

Ich dachte das ursprünglich auch, aber ich komme mit einer noch schlimmeren Situation als ich angefangen habe. Ich habe nicht nur die mehreren CRLFs, ich habe jetzt eine zusätzliche CR am Ende jeder Zeile. – Jibril

+0

Wenn ich das versuche, bekomme ich eine noch schlechtere Lösung. Sehen Sie das Ergebnis hier: http://imgur.com/a/KoIeO Die Spitze ist nach, die erste ist vorher. Beachten Sie, dass die erste Zeile mit CRLF endet, die gerade außerhalb des Rahmens liegt. – Jibril

+0

@Jibril Rückgängig? Es kann sich nicht wie eine normale Regex verhalten ... lass mich das untersuchen. – Laurel