1
我想寫一個簡單的SQL解析器來將一條sql語句分解成它的基本部分。但是,我遇到嵌套查詢問題。一個例子說明了最佳:VBScript正則表達式不貪心足夠
sql = "select * from Customers where id in (select customer_id from Orders where 1=1)"
Set re = New RegExp
re.IgnoreCase = True
re.Pattern = "^(.*)\swhere\s(.*)$"
re.Global = True
Set matches = re.Execute(sql)
If matches.count > 0 Then
Set submatches = matches(0).Submatches
where_part = Trim(submatches(1))
everything_else = Trim(submatches(0))
End If
Response.Write where_part & "<br>"
Response.Write everything_else & "<br>"
在這裏,我想where_part含有 「的ID(選擇訂單,其中1 = 1 CUSTOMER_ID)」 和everything_else含有 「SELECT * FROM客戶」。也就是說,我希望它儘可能地貪婪,第二個(。*)和第一個無私。換句話說,我希望everything_else不包含任何地方。
不過,我得到everything_else = 「SELECT * FROM客戶那裏身份證件(從訂單中選擇CUSTOMER_ID」 和where_part = 「1 = 1)」
我怎麼能解決這個問題,而不求助於令人眼花繚亂的非正則表達式的字符串解析?
完美的作品! – 2009-05-21 16:40:27