在学习正则表达式时,我想知道底层引擎是如何工作的。可能更具体地说,我想更多地了解它如何评估,优先考虑和解析表达。我觉得RegEx引擎对我来说是一个黑盒子,我真的很喜欢破译它。
所以我想问一下,在讨论RegEx引擎理论时是否有一些我可以阅读的优秀资源。
*注意:我对构建引擎不感兴趣,只是学习它的内部工作原理。
答案 0 :(得分:38)
有两种主要的正则表达式引擎。
基于有限状态自动机的那些。这些通常是最快的。他们通过构建state machine并从输入字符串中提供字符来工作。如果不是不可能的话,在这样的引擎中实现一些更高级的功能是很困难的。
基于FSA的引擎示例:
基于回溯的那些。这些通常将模式编译成字节码,类似于机器指令。然后引擎执行代码,从指令跳转到指令。当指令失败时,它会回溯以找到匹配输入的另一种方式。
基于反向跟踪的引擎示例:
了解更多信息:
如果您希望我扩展某些内容,请发表评论。