Re: [問題] 類似SQL的Parser

看板RegExp (正規表示式 Regular Expression)作者 (Analog Engineer)時間15年前 (2010/05/22 16:56), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《Geniusking (真理斯金)》之銘言: : 我的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了): : 請問要怎麼做才好?謝謝 Regular express 沒有完整的 state 功能, 並不適合作完整的 Parser, 如果你需要作 SQL Parser, 應該用正規的 Parser builder 如 Yacc, bison, ANTLR 或自己寫 Recursive Parser. Lex & Yacc 2nd 有SQL Parser 的範例, 台灣 Oreilly 有出中文版, 翻譯的不錯. -- Do not depend on others without effort... 當我年輕時,請教別人問題時常聽到上面那句話. 當時心裏偶而會有些小小抱怨. 當時間過去,我偶而會想到上面那句話, 心中十分感謝當初告訴我那句話的人. 當發現問題時,最有價值的不是問題的答案, 而是找到解決的方向,並在努力的過程裡具備解決問題的能力. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.242.205

05/23 09:14, , 1F
謝啦,php的PEAR中也有SQL_Parser也可以用
05/23 09:14, 1F
文章代碼(AID): #1BzvmeDv (RegExp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BzvmeDv (RegExp)