C / C ++中的正则表达式库

时间:2011-04-16 20:46:52

标签: c++ c regex

我想用C / C ++编写正则表达式库。 什么是好的起点,任何书籍或文章。

我知道有可用的库,但我想编写自己的版本。

3 个答案:

答案 0 :(得分:4)

一个好的起点是使用现有的实现并批评它们。

注意您不喜欢的数据结构和设计决策 在编写版本时请避免使用它们。

答案 1 :(得分:2)

[编辑2015年1月16日]我最近遇到了这本精美的书Beautiful Code。我建议你阅读Brian Kernighan的第1章“正则表达式匹配器”。

你可以阅读Ken Thompson的经典论文,“正则表达式搜索算法”...... http://portal.acm.org/citation.cfm?doid=363347.363387 ...本文应该让你很好地理解如何使用有限自动机匹配正则表达式。

这是另一页提供Russ Cox的详细信息...... http://swtch.com/~rsc/regexp/

希望这些可以帮助您入门。

答案 2 :(得分:1)

我不知道哪本书可以帮助您了解实施细节 - 我确信有大量细节可以提高效率。但是,Thomas A. Sudkamp撰写的“语言与机器”一书将有助于理解实施背后的思想。

我认为你需要做的是将正则表达式编译成有限自动机。如果你对语法和自动语言知之甚少,那么“Grammars,Automata,and Languages”这本书的第二部分将会有很大的帮助。

“编译器,原理,技术”一书工具;作者:Alfred Aho,Monica Lam,Ravi Sethi和Jeffrey Ullman(也被称为龙书),也可能有所帮助。它的目标是为计算机语言编写一个编译器,而不是正则表达式语言。但是,您可能会发现它很有帮助,特别是关于解析的部分,因为它具有更多的实用性(与非常理论化的语言和机器相反)。

无论如何,如果我要写一个正则表达式语言,那将是我的出发点。我建议你从你有权访问的图书馆借阅。除此之外,您应该看看工作实现。我只是在这里猜测,但我认为关于Perl正则表达式实现可能会有很好的文档。看到它们如此受欢迎并且运作良好。

祝你好运。