別のユーザーの質問に対する回答をテストしているときに、理解できないものを見つけました。\t
\n
\r
問題は、文字列のすべてのリテラル文字を単一のスペースに置き換えることでした。
さて、私が最初に試したパターンは次のとおりです。
/(?:\\[trn])+/
驚くほどうまくいきませんでした。Perl で同じパターンを試したところ、うまくいきました。試行錯誤の結果、次のように、パターンに一致させるために PHP が 3 つまたは 4 つのバックスラッシュを必要としていることがわかりました。
/(?:\\\\[trn])+/
また
/(?:\\\[trn])+/
これらのパターン - 驚いたことに - 両方とも機能します。これらの余分なバックスラッシュが必要なのはなぜですか?