【问题标题】:Regular Expression library in C/C++C/C++ 中的正则表达式库
【发布时间】:2011-04-16 20:46:51
【问题描述】:

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

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

【问题讨论】:

  • 没有这种语言。一个好的起点是选择语言。 如果您希望在CC++(以及Python、Perl、COBOL、...、...)中编写代码的人都使用您的库,请选择@987654325 @;如果您希望您的库仅供编写C++ 代码的人使用,请选择C++
  • 抱歉,一开始看错了。与stackoverflow.com/q/4040835/2509 重复。
  • 请考虑至少看看 Russ Cox 的 RE2 库。
  • 还有PCRE C 库。

标签: c++ c regex


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    [Edit 16-Jan-2015] 我最近遇到了这本漂亮的书Beautiful Code。我建议您阅读 Brian Kernighan 的第 1 章“正则表达式匹配器”。

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

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

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

    【讨论】:

      【解决方案3】:

      我不知道有哪本书可以帮助您了解实现细节——而且我确信有大量细节可以提高效率。但是,Thomas A. Sudkamp 的《语言和机器》一书将有助于理解实现背后的想法。

      我认为您需要做的是将正则表达式编译为有限自动机。如果你对语法和自动机不太了解,那么《语法、自动机和语言》这本书的第二部分会很有帮助。

      《编译器、原理、技术和工具》一书;由 Alfred Aho、Monica Lam、Ravi Sethi 和 Jeffrey Ullman(也称为龙书)所著,也可能会有所帮助。它面向为计算机语言而不是正则表达式语言制作编译器。但是,您可能会发现它很有帮助,尤其是关于解析的部分,因为它具有更多的实用性(与非常理论化的语言和机器相反)。

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

      祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多