2009-08-26 13 views
42

Il mio programma può accettare dati che ha caratteri di nuova riga di \ n, \ r \ r \ n o (ad esempio Unix, PC o stili di Mac)espressioni regolari per abbinare cross platform caratteri di nuova riga

Qual è il modo migliore per costruire un'espressione regolare che corrisponda a qualunque sia la codifica?

In alternativa, potrei usare il supporto universal_newline sull'input, ma ora sono interessato a vedere quale sarebbe la regex.

+8

Nota: '\ r' è lo stile _old_ Mac (e per" vecchio "intendo" OS 9 e prima "). Qualsiasi Mac che esegue OS X (a.k.a. realizzato dopo il 1999) utilizzerà '\ n' come qualsiasi altro Unix. –

+0

Quando è utile abbinare le newline e usare ''$'' per abbinare la fine della linea? – tonfa

+1

@tonfa: quando si divide un file in linee tramite espressioni regolari. –

risposta

71

Il regex che uso quando voglio essere preciso è "\r\n?|\n".

Quando non sono preoccupato per coerenza o linee vuote, io uso "[\r\n]+", immagino che rende i miei programmi da qualche parte nell'ordine dello 0,2% più veloce.

+3

Di solito quando non sono preoccupato per i newline, non sono nemmeno preoccupato per gli spazi. –

+0

Cosa rende i tuoi programmi più veloci? – sehe

1

Il modello può essere semplificato a \r?\n per un piccolo miglioramento delle prestazioni, poiché probabilmente non si ha a che fare con il vecchio stile Mac (il SO 9 non è supportato da febbraio 2002).

Problemi correlati