2012-12-08 11 views
1

저는 DFA를 가지고 있지만 그것이 수락인지 여부를 알지 못합니다. 나는 그것이 받아들이는 정규 표현만을 알고있다. 상태를 받아들이는지 알아 내려고 노력 중이므로 DFA의 각 상태를 살펴보고 현재 상태에서 생성 된 단어와 수락하는 정규식을 비교하려고합니다.문자열을 Java의 정규식과 일치 시키십시오.

그래서 단어를 정규식과 비교하여 일치하는지 알려주면 DFA의 상태를 승인 된 상태로 표시하고 다른 상태로 이동할 수 있습니다. 몇 가지 알고리즘을 구현하려고했지만 꽤 복잡한 문제였습니다. 이것에 관해 나에게 조언 해 줄 수 있니? 감사!

알파벳 {A, B는 C}

예 정규 표현식 : AB (a는 | C) *

+1

이것이 자바해야합니까? 나에게 계산 이론처럼 보인다. – squiguy

+0

그가 자바 구현을 찾고 있다고 생각합니다 –

+0

Im이 자바에서 구현했습니다. 정규 표현식 라이브러리를 사용할 수는 없기 때문에 –

답변

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

이 정규 표현식 패턴 매칭에 자바 튜토리얼은 다음과 같습니다 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();