私はこのようなものを持っています
$matches = array();
preg_match_all('/(`.+`)(\s+AS\s+`.+`)?/i', '`foo` AS `bar`', $matches);
print_r($matches);
結果は
Array
(
[0] => Array
(
[0] => `foo` AS `bar`
)
[1] => Array
(
[0] => `foo` AS `bar`
)
[2] => Array
(
[0] =>
)
)
では、なぜ 'AS `bar`' が含まれていないの$matches[2][0]
でしょうか? (正規表現から「?」記号を削除すると取得できますが、「?」が必要です:))