2009-08-26 2 views
42

Mein Programm Daten annehmen kann, die Zeilenumbrüche von \ n \ r \ n oder \ r (zB Unix, PC oder Mac Stile)Regular Expression Cross-Plattform-Zeilenumbrüche übereinstimmen

Was ist der beste Weg, um Konstruieren Sie einen regulären Ausdruck, der der Codierung entspricht?

Alternativ könnte ich universal_newline Unterstützung bei der Eingabe verwenden, aber jetzt bin ich interessiert zu sehen, was die Regex wäre.

+8

Nur zu beachten, '\ r' ist der _old_ Mac Stil (und mit" alt "meine ich" OS 9 und vorher "). Jeder Mac, auf dem OS X läuft (auch nach 1999), benutzt '\ n' wie jeder andere Unix. –

+0

Wann ist es sinnvoll, Zeilenvorschübe zu vergleichen und "$" zu verwenden, um das Ende der Zeile zu finden? – tonfa

+1

@tonfa: Beim Teilen einer Datei in Zeilen über Regex. –

Antwort

71

Die Regex, die ich verwende, wenn ich genau sein will, ist "\r\n?|\n".

Wenn ich nicht über Konsistenz oder Leerzeilen besorgt bin, verwende ich "[\r\n]+", ich stelle mir vor es macht meine Programme irgendwo in der Größenordnung von 0,2% schneller.

+3

Normalerweise, wenn es mir nicht um Zeilenumbrüche geht, mache ich mir auch keine Gedanken über Leerzeichen. –

+0

Was macht Ihre Programme schneller? – sehe

1

Das Muster kann für einen kleinen Leistungsgewinn auf \r?\n vereinfacht werden, da Sie wahrscheinlich nicht mit dem alten Mac-Stil umgehen müssen (OS 9 wird seit Februar 2002 nicht unterstützt).