2012-12-08 28 views
1

我有一個DFA,但我不知道它是否接受狀態。我只知道它接受的正則表達式。我試圖找出它是否接受狀態,所以我研究了DFA的每個狀態,並且想要將接受的正則表達式與當前狀態生成的單詞進行比較。用Java中的正則表達式匹配字符串

因此,我在尋找能夠將該詞與正則表達式進行比較的東西,並告訴我它是否匹配,因此我可以將DFA的這種狀態標記爲已接受的狀態並移至其他狀態。我試圖實現一些算法,但它已被證明對我來說是一個相當複雜的問題。你能在這方面給我建議嗎?謝謝!

字母:{A,B,C}

實例的正則表達式:AB(A | C)*

+1

這是什麼都與Java呢?看起來像計算理論對我來說。 – squiguy

+0

我認爲他正在尋找一個Java實現 –

+0

Im在Java中實現這個,因爲我想我可以使用它的正則表達式庫 –

回答

1

看看這個頁面: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

它看起來像什麼你尋找的是:

boolean isMatch = Pattern.matches("ab.(a|c)*", str); 
+0

正則表達式應該是一個字符串。請將代碼縮進代碼塊中。 –

+0

我還沒有將它包含在我的代碼中,但到目前爲止,它似乎正在按照我的需要工作,謝謝! :) –

+0

它很好,謝謝! :) –

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(); 
相關問題