regex - NFA DFA 和 Regex 到转换表

标签 regex dfa nfa

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我一直在寻找一些输入正则表达式或字符串并将其转换为 NFA 和 DFA 的算法,这实际上会打印出相应的最终 DFA 的转换表。

因此,我想知道是否已经有一个算法或 C 或 Python 库可以做到这一点,或者您是否有我可以实现的算法建议。

谢谢你。

最佳答案

我不确定这些链接中的任何一个是否可以帮助您。

第一个在 Python 中提供了一个非常简单的 NFA/DFA 实现,从 NFA 到 DFA 的转换。虽然它不会从正则表达式生成 NFA,但它并不难做到。第二个站点对 NFA 与 DFA 进行了长时间的讨论,包括大量代码示例(主要是 C 语言)以及指向我知之甚少的外部库的链接。第三个和第四个链接提供了第二篇文章作者开发的两个regex引擎实现的源码,包括从regex解析到NFA,再从NFA转换到DFA。但是请注意,我还没有看过这些项目中的任何一个。

  • https://gist.github.com/Arachnid/491973
  • http://swtch.com/~rsc/regexp/
  • https://code.google.com/p/re1/source/browse/
  • https://code.google.com/p/re2/source/browse/

  • 否则,我会提到大多数现实世界的正则表达式引擎使用 NFA,而不是 DFA,因为一些扩展功能根本无法用 DFA 执行。因此,如果上面的链接都不能帮助您,那么您可能会很幸运地查看编译器-编译器,因为它们是实际使用 DFA 的那些。

    关于regex - NFA DFA 和 Regex 到转换表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477419/

    相关文章:

    regex - 如何对powershell中文件中的每一行使用正则表达式

    regex - 从给定的正则表达式创建语法树(对于 RE 到 DFA)

    algorithm - 确定性有限自动机模式

    algorithm - NFA 到 DFA 转换的简洁描述?

    c++ - 在结构定义中声明一个结构堆栈

    regex - RE 到 NFA Thompson 的构造步骤 ((c|a)b*)*

    javascript - 从数字中删除无关紧要的尾随零?

    regex - 在SEED中向后看有效吗?

    algorithm - 寻找 DFA 结构的补集

    java - 如何检查字符串是否包含java中的url