用于检查两个正则表达式是否相等/同构的库

use*_*384 25 c c++ python regex nfa

我需要一个库,它将接受两个正则表达式并确定它们是否是同构的(即匹配完全相同的字符串集合)例如a | b与[ab]同构

据我所知,一个正则表达式可被转换为NFA在某些情况下可以有效地转换为DFA.然后可以将DFA转换为最小DFA,如果我理解正确的话,它是唯一的,因此可以比较这些最小DFA的相等性.我意识到并非所有正则表达式NFA都可以有效地转换为DFA(特别是当它们是从Perl Regexps生成而不是真正的"常规"时),在这种情况下理想情况下,库只会返回错误或其他指示转换是不可能.

我在网上看到大量关于这样做的文章和学术论文(甚至是一些课程要求学生这样做的编程任务),但我似乎无法找到实现这一功能的库.我更喜欢Python和/或C/C++库,但是任何语言的库都可以.有谁知道这样的图书馆?如果没有,有人知道我可以用作起点的图书馆吗?

use*_*136 10

还没试过,但Regexp:比较 Perl看起来很有希望:如果第一个的语言是第二个的子集,那么两个正则表达式是等价的,反之亦然.