正規表現でたまに見る「?:」とは

?: これなんだろうなーと思いながら、なかなか調べても出てこなかったのでメモ。

?:正規表現のキャプチャしない指定の記述だった。

例えば。

以下の郵便番号の数値を取得するパターンでハイフン移行の数値をキャプチャしないようにしたい場合は以下のように記述。(そんなケースあるんだろうか・・)

/([0-9]{3})-(?:[0-9]{4})/

PHPのpreg_matchで実行(http://okumocchi.jp/php/re.php で実行)すると、

preg_match('/([0-9]{3})-(?:[0-9]{4})/', '011-1111', $m); 
$m[0] = 011-1111
$m[1] = 011

確かにはいってない!!(数字は適当に入れたやつなので意味なし)

詳しくはこちらに書いてあるので、そちらをー

PHP: サブパターン - Manual