ブラックボックス

プログラミングのノウハウやライフハックをどんどん投稿していきたい

Sep 5, 2013 - 1 minute read - ノウハウ

【正規表現】preg_replaceで後方参照の後ろに数字がある場合

小ネタばかりになってしまう。

PHPにて、正規表現で置換をしようと思ったが、後方参照のすぐ後ろに数字が来た時、どうもうまく動いてくれなかった。

preg_replace('/^(.*)test/', '$1123', 'aaaaatest');

うろ覚えだがこんな感じ。
aaaaa123
という結果を期待するも、
23
という結果となってしまう。

どうすればいいものか、と考えていたが、答えは公式マニュアルに書いてあった。

PHP Manual preg_replace

preg_replace('/^(.*)test/', '${1}123', 'aaaaatest');

後方参照に使う数字は{}で囲めば、期待した結果となる。
後方参照の場合は、後ろに数字がつかなくても明示的に{}で囲むようにしたほうがいいのだろうか。