我有兴趣构建一个正则表达式引擎,作为一个侧面项目,仅用于学习目的。建立一个正则表达式引擎 - 在线资源?
我知道后面的正则表达式的评价理论,并有有限状态机等
什么我感兴趣的是一个正则表达式引擎是如何在软件中实现的充分理解。所以我想知道是否有任何类型的教程或在线资源解释了正则表达式引擎的实现,从正则表达式转换为FSM等等。我不希望任何网站只是解释它背后的理论。
谢谢。
我有兴趣构建一个正则表达式引擎,作为一个侧面项目,仅用于学习目的。建立一个正则表达式引擎 - 在线资源?
我知道后面的正则表达式的评价理论,并有有限状态机等
什么我感兴趣的是一个正则表达式引擎是如何在软件中实现的充分理解。所以我想知道是否有任何类型的教程或在线资源解释了正则表达式引擎的实现,从正则表达式转换为FSM等等。我不希望任何网站只是解释它背后的理论。
谢谢。
如果你习惯使用C,你可能会从查看源代码中受益为Perl-compatible regular expressions。
在漂亮的代码(Amazon,online draft)布赖恩Kernighan的谈论罗布派克的优雅,非常小的正则表达式匹配的第一章。这很简单,但Kernighan提供了七个练习来扩展它,这可能是一个很好的介绍。
我觉得Mark-Jason Dominus的文章How Regexes Work非常好。它针对的是非程序员,但它是以非常算法的方式编写的,所以可以用它来实现这样的引擎,特别是如果您有任何编译经验的话。我自己也是这样做的。
该文章还提到了更高级的提示和技巧,并且提供了有关引擎限制的一些信息。
我迟到了,但是我发现this WSU course assignment在高级别呈现正则表达式引擎实现方面最有用。我不知道C,所以材料以与语言无关的格式呈现是很好的。重要的是,它做了伟大的工作,解释:
此外,我发现Pace professor's article有助于实施WSU和Cox提到的re2post
方法。
我建议先阅读WSU文章,然后阅读Russ Cox的文章,以获得更深入的内容。
另一个简单明了implementacion(C,少500线)RecursiveRegexpRaptor
从Algorithms由罗伯特·塞奇威克第五章是一个很好的入门的话题。它解释了NFA是什么以及如何从正则表达式构建NFA。这些例子有视觉效果,非常清晰。它甚至有一个简单的正则表达式匹配的代码。还有一些练习可以实现更多的正则表达式功能。
对于德国读者;第三章“模式匹配Algorithmen献给einfache琴弦”的“Algorithmen auf Sequenzen”可能是有趣的。作者是斯文Rahmann博士,教授Lehrstuhl十一,Fakultät献给Informatik公司,TU多特蒙德。所有算法都有Python示例。
该网站似乎是因为几天下来。 [这里](http://webcache.googleusercontent.com/search?q=cache:XQrcPV-4kngJ:swtch.com/~rsc/regexp/regexp1.html+)由谷歌缓存的文章的链接。 – 2013-09-25 12:09:14