Это должно делать то, что вы хотите:
$matches = array();
$string = "Method(hierarchy.of.properties) = ?";
foreach(preg_split('/(12|[^a-zA-Z0-9.])/', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $match) {
if (trim($match) != '')
$matches[] = $match;
}
Я использовал цикл для удаления всех совпадений с пробелами, поскольку, насколько я знаю, в preg_split () эта функция не предусмотрена для вас.