2012-03-07 18 views
25

2つの正規表現を取り入れ、それらが同形であるかどうかを判断するライブラリが必要です(つまり、全く同じ文字列に一致するかどうかを確認する) たとえばa | bはisomorphic to [ab]2つの正規表現が等しいか同形であるかどうかを確認するライブラリ

私が理解しているように、正規表現はNFAに変換でき、場合によっては効率的にDFAに変換できます。 DFAを最小限のDFAに変換することができます。最小限のDFAは、正しく理解すれば一意であるため、これらの最小限のDFAを比較することができます。私はすべての正規表現NFAが効率的にDFAに変換できるわけではないことを認識しています(特にPerl Regexpsから生成された正規表現ではない)。理想的には、ライブラリがエラーを返すか、ありえない。

私はこれをやっていることに関する記事や学術論文をオンラインで見ることができますが、これを実装するライブラリを見つけることはできません。私はPythonやC/C++のライブラリを好むだろうが、どの言語のライブラリでもできる。誰かがそのようなライブラリを知っていますか?もしそうでなければ、誰かが近くに近づいて私が出発点として使用できるライブラリを知っていますか?

+2

これは宿題ですか? :-) –

+3

いいえ、それは研究プロジェクトの一部です。しかし、これはプロジェクトの中核ではないので、私は自分のロールする時間を費やすつもりはない。 – user1255384

+2

私はちょうど冗談だった。これは非常に良い質問です。だから+1。 –

答えて

10

PerlのためのRegexp:Compareは有望そうです:最初の言語が2番目のサブセットであり、その逆の場合、2つの正規表現は同等です。

+1

私はこれをチェックして、まさに私が望んでいるように見えます。私はそれがコードを大雑把に見ているのかどうかはわかりませんが、テストしたすべての単純なケースでうまくいきました。ポインタありがとう! – user1255384

0

brics automaton library Java用もサポートしています。正規表現をDFAに変換することで、正規表現が同等かどうかを確認できます。

関連する問題