<?php
echo "Normal match:\n";
preg_match('/two/', 'two', $match);
var_dump($match);
echo "Unmatched $1 is not reported:\n";
preg_match('/(one)?two/', 'two', $match);
var_dump($match);
preg_match('/two(three)?/', 'two', $match);
var_dump($match);
echo "Unmatched $1 is reported if $2 is set:\n";
preg_match('/(one)?(two)/', 'two', $match);
var_dump($match);
echo "Unmatched $2 is not reported even though $1 is set:\n";
preg_match('/(two)(three)?/', 'two', $match);
var_dump($match);