在學習正則表達式時,它讓我想知道底層引擎是如何工作的。也許更具體一點,我想知道更多關於它如何評估,優先考慮和解析表達。我覺得RegEx引擎對我來說是一個黑盒子,我真的很喜歡破譯它。RegEx引擎如何工作
所以我想問一下是否有一些很好的資源,我可以在上面討論RegEx引擎理論。
*注意:我對構建引擎不感興趣,只是瞭解它的內部工作原理。
在學習正則表達式時,它讓我想知道底層引擎是如何工作的。也許更具體一點,我想知道更多關於它如何評估,優先考慮和解析表達。我覺得RegEx引擎對我來說是一個黑盒子,我真的很喜歡破譯它。RegEx引擎如何工作
所以我想問一下是否有一些很好的資源,我可以在上面討論RegEx引擎理論。
*注意:我對構建引擎不感興趣,只是瞭解它的內部工作原理。
有兩個主要類的正則表達式引擎。
那些基於有限狀態自動。這些通常是最快的。他們通過構建state machine並從輸入字符串中提供字符來工作。即使不是不可能,在這樣的引擎中實現一些更高級的功能也是困難的。基於FSA引擎
實例:
那些基於回溯。這些經常將模式編譯成字節碼,類似於機器指令。然後引擎執行代碼,從指令跳轉到指令。當一條指令失敗時,它會回溯尋找另一種匹配輸入的方式。回溯基於發動機
例子:
欲瞭解更多信息:
如果您希望我在某些方面有所擴展,請發表評論。
它看起來像我有一些工作爲我貼出鏈接,但我相信這是更多的東西我正在尋找。更進一步的,如果你知道一本可以購買的實際書籍,那就太棒了。 – Robb 2010-09-02 15:24:28
我還沒有讀過關於這個主題的很多書,但我喜歡的是Michael Sipser的「計算理論導論」。它不僅僅是正則表達式,而是一直到圖靈機和NP完整性等。 – 2010-09-02 16:52:29
掌握正則表達式是一本很棒的書,雖然它沒有關注這個主題,但它有幾章討論每個正則表達式引擎的行爲。 (儘管它更實用一些,而不是分析引擎本身的細節) – NorthGuard 2010-09-01 22:56:22
我實際上一直在探索那本書,但並不瞭解這些章節。謝謝! – Robb 2010-09-02 00:26:01
一個優秀的artile是:[如何RegEx工程](http://perl.plover.com/Regex/article.html) – PHPst 2012-11-14 17:02:21