我需要一种库,它将接受两个正则表达式并确定它们是否同构(即完全匹配相同的字符串集或不匹配)。 例如,a | b与[ab]同构。
据我所知,正则表达式可以转换为NFA,然后在某些情况下可以有效地转换为DFA。然后,可以将DFA转换为最小DFA,如果我理解正确,则该最小DFA是唯一的,因此这些最小DFA可以进行比较以检查它们是否相等。我意识到,并非所有正则表达式NFA都可以有效地转换为DFA(特别是当它们是从Perl Regexps生成时,这些Regexps并不真正“常规”),在这种情况下,理想情况下,该库将返回错误或其他指示表明转换不可能。
我看到网上有很多关于这个问题的文章和学术论文(甚至有一些为了让学生完成这个任务的编程作业),但我似乎找不到实现此功能的库。我更喜欢Python和/或C/C++库,但是任何语言的库都可以。有没有人知道这样的库?如果没有,是否有人知道一个接近的库,可以作为起点使用?