我試過解析MySQL轉儲來自動創建遷移。正則表達式php重複字符錯誤
DROP DATABASE與解析:
preg_match_all('/DROP TABLE.+`.+`(.+|.?);/', $this->contents, $this->dropTableBlock);
但創建表的查詢返回false和空數組:
preg_match_all('/CREATE TABLE.+`.+`.+\(.+\).+(ENGINE=.+)?.+(DEFAULT CHARSET=[.]{1,5});/is', $this->contents, $this->createTableBlock);
在regex101.com那的比賽需要字符串: https://regex101.com/r/eD8wI5/1
告訴我請問,爲什麼preg_match_all什麼都找不到?
您可以進一步提高性能[如regex101](https://regex101.com/r/pD0xL0/1)(也用於匹配引擎)。 –
這不是一個正則表達式的工作。你應該使用一個SQL解析器,例如下面這個:https://github.com/greenlion/PHP-SQL-Parser –
不是'(。+ |。?)'和'(。*)'一樣嗎?但是即使這沒有意義。 –