PHP 正規表現の使い方

入力されたデータから特定の部分のみを取得したかったり、データのフォーマットの成形などをする際には正規表現を用いることが多いと思います。

今回は簡単な例ですが、以下のような文章があった際に「±○○○」の数字の部分(-3000,+2500)を抜き出すことを考えます。

$str_1 = '今月の収支は-3000円です。';
$str_2 = '今月の収支は+2500円です。';


$pattern = '/(\+|-)(\d)+/';
preg_match($pattern, $str1, $match_1);
preg_match($pattern, $str1, $match_2);

echo ($match_1[0]); // -3000
echo ($match_2[0]); // +2500

\(\+|-)

|は「OR」を意味するので('a'|'b')とすると「aかb」となります。 +の前に\がついていますが、これはエスケープ文字といってこの記号の後の特殊文字をそのまま出力します。
+が正規表現については意味のある記号(後述)になるので、この記号をそのまま文字列として出力するために\を使用しています。

(\d)+

\dは0−9までの数字を意味し、+は特定の文字の1回以上の繰り返しになります。
そのため、(\d)+0-9までの数字の1回以上の繰り返しになります。