是否有一个好的库可以将正则表达式转换成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/