Barra invertida extra necessária no padrão regexp do PHP
Ao testar uma resposta parapergunta de outro usuário Encontrei algo que não entendo. O problema foi substituir todos os literais\t
\n
\r
caracteres de uma sequência com um único espaço.
Agora, o primeiro padrão que tentei foi:
/(?:\\[trn])+/
que surpreendentemente não funcionou. Eu tentei o mesmo padrão em Perl e funcionou bem. Após algumas tentativas e erros, descobri que o PHP deseja 3 ou 4 barras invertidas para esse padrão corresponder, como em:
/(?:\\\\[trn])+/
ou
/(?:\\\[trn])+/
esses padrões - para minha surpresa - ambos funcionam. Por que essas barras invertidas extras são necessárias?