作者Geniusking (真理斯金)
看板RegExp
標題[問題] 類似SQL的Parser
時間Thu May 20 21:10:26 2010
我的String是一個像SQL的Query,有sub select:
select A, B from Table where city in
( select id from Table where name in
( select name from Table where id=J ))
現在用
preg_match("
/SELECT (.+) FROM (.+) WHERE (.+) IN \([\s]*(.+)\)$/i", $q, $m)
Match的結果是(找到第二個from了):
Array (
[0] => select A, B from Table where city in ( select id from Table where name in ( select name from Table where id=J ))
[1] => A, B from Table where city in ( select id
[2] => Table
[3] => name
[4] => select name from Table where id=J )
)
我想要的結果是
Array (
[0] => select A, B from Table where city in ( select id from Table where name i
[1] => A, B
[2] => Table
[3] => name
[4] => select id from Table where name in ( select name from Table where id=J )
)
請問要怎麼做才好?謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.198.98
1F:→ Geniusking:改成(.+?)就work了... 05/20 22:44
2F:→ TonyQ:這是 greedy 造成的影響。 05/28 16:52