作者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