Здравствуйте. Мне надо вытащить из SQL запроса название полей, вывод которых запрашивается (из части запроса между SELECT и FROM). Примеры: COUNT(`apelsin`) NOW() MAX(`test`.`apelsin`) MIN(test.apelsin) COUNT(*) * `fruits`.`banan` DATETIME(DATE(TIME(`field`))) `banan` использование: Код (Text): $returnValue = preg_match_all('/^.+\(([A-z`._]+)\).*$|^([^()*]+)$/m', $string, $matches) Выражение работает, но на выходе получаем массив matches, в котором разделены найденные слова для первого случая и для второго. Какое выражение будет давать тот же результат, но лучше - чтобы найденные слова небыли разделены по разным случаям? Если я не понятно объяснил что мне нужно, то вот нагляднее: $matches сейчас: Код (Text): array ( 0 => array ( 0 => 'COUNT(`apelsin`)', 1 => 'MAX(`test`.`apelsin`)', 2 => 'MIN(test.apelsin)', 3 => '`fruits`.`banan`', 4 => 'DATETIME(DATE(TIME(`field`)))', 5 => '`banan`', ), 1 => array ( 0 => '`apelsin`', 1 => '`test`.`apelsin`', 2 => 'test.apelsin', 3 => '', 4 => '`field`', 5 => '', ), 2 => array ( 0 => '', 1 => '', 2 => '', 3 => '`fruits`.`banan`', 4 => '', 5 => '`banan`', ), ) $matches, который нужен: Код (Text): array ( 0 => array ( 0 => 'COUNT(`apelsin`)', 1 => 'MAX(`test`.`apelsin`)', 2 => 'MIN(test.apelsin)', 3 => '`fruits`.`banan`', 4 => 'DATETIME(DATE(TIME(`field`)))', 5 => '`banan`', ), 1 => array ( 0 => '`apelsin`', 1 => '`test`.`apelsin`', 2 => 'test.apelsin', 3 => '`fruits`.`banan`', 4 => '`field`', 5 => '`banan`', ), )
Так по запятой я уже разбил. Теперь мне нужно вытащить название поля из возможных вариантов. Возможные варианты, которые у меня могут встретиться, я привёл в примерах