regex - 用于将正则表达式转换为 NFA 的库?

标签 regex state-machine dfa nfa

是否有一个好的可以将正则表达式转换成NFA?我看到很多关于这个主题的学术论文,它们很有帮助,但在工作代码方面却不多。

我的问题部分是出于好奇,部分是由于实际需要在我正在处理的生产系统上加速正则表达式匹配。虽然出于学习的目的探索这个主题可能很有趣,但我不确定它是否是加速我们的模式匹配的“实用”解决方案。我们是一家 Java 商店,但很乐意接受任何语言的优秀代码的指点。

编辑:

有趣的是,我不知道 Java 的正则表达式已经是 NFA。 this paper的标题让我不相信。顺便说一下,我们目前正在 Postgres 中进行正则表达式匹配;如果简单的解决方案是将匹配移动到 Java 代码中,那就太好了。

最佳答案

解决您加速正则表达式的需求:

Java 对其正则表达式引擎的实现是基于 NFA 的。因此,为了调整您的正则表达式,我会说您将从更深入地了解引擎的实现方式中受益。

因此,我将您引导至:Mastering Regular Expressions这本书对 NFA 引擎及其执行匹配的方式进行了大量处理,包括如何调整特定于 NFA 引擎的正则表达式。

此外,查看 Atomic Grouping用于调整您的正则表达式。

关于regex - 用于将正则表达式转换为 NFA 的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726105/

相关文章:

regex - vb.net正则表达式与字符串的比较

c++ - 线程代码解释器中的手动操作调用(打破正常流程)

rust - 表驱动的词法分析需要多少缓冲?

algorithm - Knuth-Morris-Pratt 算法基于 DFA `?

c# - C#正则表达式中的外文字符

java - 如何验证字符串仅使用数字并输出一条消息,说明它只能是 Bluej 上的数字

java - 为什么我的正则表达式在 RegexPlanet 和 regex101 上有效,但在我的代码中却无效?

audio - 状态机图:如何分辨一个过渡导致另一个过渡?

c - 带有函数指针的状态机 : how to set the function pointers?

dfa - 我似乎无法为这种语言创建 DFA