Если нет то, имхо, лучьше уж юзать два регекспа, из соображений наглядности кода.
preg_match_all('~(?s)<select>(.*?)</select>~', $string, $aMatch);
foreach($aMatch[1] as $select)
{ preg_match_all('~(?s)<option>(.*?)</option>~', $select, $aMatch);
$options[] = $aMatch[1];
}
return $options;