我想分析一個MySQL正則表達式的請求, ,即從mysql語句中提取select_expr和table_references。 例如,這裏有兩個,我想我的正則表達式匹配的MySQL查詢:正則表達式,PHP:如何否定一個捕獲括號
select id, name from table
select id, name
從該查詢我想提取2個部分:「ID,名稱爲」信息和「表」信息太多。
第一部分實際上可以包含像CONCAT一個字符串( 'ID', 'NOM' '')AS別名,
和第二部分可以是這樣的:表t INNER JOIN table2的T2 ON噸.ID = t2.user_id。
所以,我想這個「我知道這不是工作,但會讓我在路上」的正則表達式:
'!select (.*)(from (.*))?!i'
當然,上述第一捕捉括號得到所有,直到最後,這是不是我想。
在
select id, name from table
字符串,它匹配「從表ID,NOM」的第一部分,這不是我想要的。 (我想在這種情況下第一部分是「id,nom」,第二部分是「table」)。
從這一點我想要做的是告訴正則表達式,如果創建,第一個捕獲括號 不應該匹配「從」序列。 我知道有否定字符類功能,[^ a-z], ,但它只是否定一個字符而不是整個字符串(作爲按正確順序的字母序列)。
你有什麼燈光嗎? 我們可以用正則表達式否定括號內容嗎?
是」 ^選擇(?:從(*) )?$!我工作? – loganfsmyth
哦,是的,謝謝,我會調查那個(?:)符號。真的很酷。 – ling