有时你可能会为一项任务提出两种不同的正则表达式。我想知道你如何检查两个正则表达式是否描述了相同的模式?
是否有一些算法可供检查?
是否有一些(在线)工具可供检查?
例如,我在这里有两个正则表达式Can we rewrite lookbehind in terms of the if-then-else?,我想知道它们是否相同。
感谢。
答案 0 :(得分:1)
常规语言的等同性是可判定的(参见Hopcroft,Motwani,Ullman:自动机理论,语言和计算简介,第4.4章),这也是最小化DFA的基础。直观地说,如果最小化的DFA是等效的(直到重命名状态),那么常规语言生成/接受的语言是相同的。所以,你的第一个问题的答案是肯定的。
我确定有在线工具,但在最糟糕的情况下,你可以问' flex'或等效于最小化自动机,你可以实现一个简单的工具,检查它们是否可以一致地重命名。
此SO条目也相关: