Zusätzlicher Backslash in PHP-Regexp-Pattern erforderlich

Beim Testen einer Antwort aufFrage eines anderen Benutzers Ich habe etwas gefunden, das ich nicht verstehe. Das Problem war, alle wörtlichen zu ersetzen\t \n \r Zeichen aus einer Zeichenfolge mit einem einzelnen Leerzeichen.

Das erste Muster, das ich ausprobierte, war:

/(?:\\[trn])+/

was überraschenderweise nicht funktionierte. Ich habe das gleiche Muster in Perl ausprobiert und es hat gut funktioniert. Nach einigem Ausprobieren stellte ich fest, dass PHP 3 oder 4 Backslashes für dieses Muster haben möchte, wie in:

/(?:\\\\[trn])+/

oder

/(?:\\\[trn])+/

Diese Muster funktionieren - zu meiner Überraschung - beide. Warum sind diese zusätzlichen Backslashes notwendig?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage