eseguire controllo se il motore regex supporta \R
come una classe di caratteri stenografia e non avrà bisogno di essere interessati con le combinazioni diverse a capo/avanzamento riga Unicode. Se implementato correttamente, è possibile abbinare in modo trasparente tutte le varie terminazioni di linea ascii o Unicode utilizzando \R
.
In Unicode è necessario per rilevare NEL
(/ 390 linea OS fine, \ x85) LS
(linea di separazione, \ x2028) e PS
(Paragrafo separatore, \ x2029) se si vuole essere piattaforma completamente cross in questi giorni.
È discutibile se LS, NEL e PS debbano essere trattati come interruzioni di linea, terminazioni di linea o spazi bianchi. Lo standard XML 1.0, ad esempio, does not recognize NEL come carattere di interruzione di riga. ECMAScript considera LS
e PS
come interruzioni di riga ma NEL
come spazio vuoto. Perl unicode regexs tratteranno VT
, FF
, CR
, CRLF
, NEL
, LS
e PS
come interruzioni di riga al fine di ^
e $
caratteri meta espressioni regolari.
Il numero Unicode Implementation Guide (sezione 5.8 e tabella 5.3) è probabilmente la migliore scommessa su quale sia il trattamento definitivo di cosa sia una "nuova linea".
Se siete preoccupati solo con ascii con le varianti classiche DOS/Windows/Unix/Mac, l'espressione regolare equivale a \R
è (?>\r\n|[\r\n])
In Unicode, l'equivalente di \R
è (?>\r\n|\n|\x0b|\f|\r|\x85|\x2028|\x2029)
Il \x0b
in C'è una verticale scheda; ancora una volta, questo può o meno adattarsi alla definizione di un'interruzione di riga, ma corrisponde alla raccomandazione di Unicode Implantation. (FF
o \x0C
non è incluso nella regex poiché un Feed modulo è una nuova pagina, non una nuova riga nella definizione.)
vi preoccupate per le interruzioni di riga-Mac-stile vecchio ('\ R'), oppure solo su Unix e Windows (' \ n' e '\ r \ n')? –
possibile duplicato di [Espressione regolare per abbinare caratteri di nuova riga multipiattaforma] (http://stackoverflow.com/questions/1331815/regolare-espressione-per-match-cross-platform-newline-characters) – Amarghosh