1

私は DFA を持っていますが、州を受け入れているかどうかわかりません。私はそれが受け入れる正規表現しか知りません。状態を受け入れているかどうかを調べようとしているので、DFA の各状態を調べて、受け入れている正規表現と現在の状態によって生成された単語を比較したいと思います。

そのため、単語を正規表現と比較して一致するかどうかを教えてくれるものを探しているので、DFA のこの状態を承認済みの状態としてマークし、別の状態に移ることができます。私はいくつかのアルゴリズムを実装しようとしていましたが、それは私にとって非常に複雑な問題であることが判明しました. これについて教えてもらえますか?ありがとう!

アルファベット: {a,b,c}

正規表現の例: ab.(a|c)*

4

2 に答える 2

1

このページを見てください: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

あなたが探しているのは次のようです:

boolean isMatch = Pattern.matches("ab.(a|c)*", str);
于 2012-12-08T18:07:15.677 に答える
0

これは、正規表現パターン マッチングに関する Java チュートリアルです: http://docs.oracle.com/javase/tutorial/essential/regex/intro.html

特に正規表現の問題ですか、それとも DFA の問題ですか?

これは、あなたがやりたいことのいくつかのサンプルコードです:

String state = WHATEVER THE DFA's state is

Pattern p = Pattern.compile("ab.(a|c)*");

Matcher m = p.matcher(state);

boolean isMatch = m.matches();
于 2012-12-08T18:10:19.273 に答える