Durante il test di una risposta per another user's question ho trovato qualcosa che non capisco. Il problema era di sostituire tutti i letterali \t
\n
\r
caratteri da una stringa con un singolo spazio.Extra barra rovesciata necessaria nel modello regexp di PHP
Ora, il primo modello che ho provato era:
/(?:\\[trn])+/
che sorprendentemente non ha funzionato. Ho provato lo stesso modello in Perl e ha funzionato bene. Dopo alcuni tentativi ed errori ho scoperto che PHP vuole 3 o 4 barre rovesciate per quel modello da abbinare, come in:
/(?:\\\\[trn])+/
o
/(?:\\\[trn])+/
questi modelli - con mia grande sorpresa - sia il lavoro. Perché sono necessari questi backslash aggiuntivi?
Perl espressioni regolari sono integrate nel linguaggio, quindi è necessario solo due barre inverse. –