Вы не можете легко разобрать это с помощью одного регулярного выражения.(Это выполнимо, но не просто.)
Вы должны использовать простой токенизатор, где регулярное выражение снова становится полезным инструментом:
preg_match_all('/\w+|".*?"|\W/', $_cmd = 'GET a, b FROM p IN a and c="I am from Sarajevo" or d>1 ', $list);
Это дает вам простой список, где вы простонужно найти пункты, которые вас интересуют, а затем снова включить последующие токены (хотя я запутался в вашем случае использования):
[0] => Array
(
[0] => GET
[1] => a
[2] => ,
[3] => b
[4] => FROM
[5] => p
[6] => IN
[7] => a
[8] => and
[9] => c
[10] => =
[11] => "I am from Sarajevo"
[12] => or
[13] => d
[14] => >
[15] => 1
)