2011-05-07 2 views
1

이 값은 true를 반환하지만 false를 반환합니다.Java Regex가 일치 항목을 찾지 못했습니다.

내가 자바 스크립트 정규식 테스터에 그것을 테스트했습니다
"ADC".matches("A.*?C") 

: http://regexpal.com/

및 작동, 왜 자바에서 작동하지 않는 이유는 무엇입니까?

편집 :이와 같은 :

System.out.println("DEAGHHF".matches("(A.*?C|C.*?A|D.*?C|C.*?D|A.*?F|F.*?A)")); 

반환 거짓, regexpal true를 반환 (aswhile 같은 다른 자바 스크립트 정규식 엔진).

+0

죄송 찾고 있지만 허용하는 "regexbuddy"언급 regexpal 소프트웨어를 시도 할 수 있습니다 자바에서 사용할 함수를 내보낼 수도 있습니다. –

+0

올바른 표현과 입력을 보여 주셨습니까? 이 식은 나를 위해 regexpal.com에서 입력 한 것과 일치하고 "ADC".matches ("A. *? C")'를 실행할 때도 일치합니다. –

+1

왜 DEAGHHF는 A.? C? C? C? C? C? C.? D.A.? F? F.?A와 일치해야합니다. 정규 표현식은 문자열의 길이가 2 또는 3이어야한다고 말합니다. 문자열 당신이 가지고있는 것은 길보다 길기 때문에 부분적으로 만 매치 할 수 있습니다. – Kaj

답변

6

아니요, it returns true.

System.out.println("ADC".matches("A.*?C")); 

프린트 true.

regexpal.com 구현은 버그가있는 것 같습니다 (이는 버전 0.1.4이므로 이해할 수 있습니다). 반복적으로 ABC을 입력 해보십시오. 매초마다 ABC이 거부됩니다. (적어도 파이어 폭스의 내 버전을 볼 때.)

당신의 편집에 관한 :

A.?C|C.?A|D.?C|C.?D|A.?F|F.?A 

A.*?C or 
C.*?A or 
D.*?C or 
C.*?D or 
A.*?F or 
F.*?A 

로 해석됩니다

Something that starts with A and ends with C, or 
Something that starts with C and ends with A, or 
Something that starts with D and ends with C, or 
.... 
Something that starts with F and ends with A, 

"DEAGHHF부터 "로 시작합니다.및 F으로 끝나면 일치하지 않습니다.

은 아마 당신은 (난 단지 내가 그들을 위해 작동하지 않습니다, 도구 나 자신을 사용하는) 작은 고라를 들어, Matcher.find method

+0

+1 나를 위해 잘 작동합니다. :) –

+1

그래, 나도 잘해. RegEx for Java를 테스트하려면 http://www.regexplanet.com/simple/index.html을 권장합니다. 꽤 유용한 종들과 휘파람 (특히 "자바 문자열로 정규 표현식"을 얻는 것)이 정말 훌륭합니다! – Voo

+0

편집 내 질문 – Ajay

관련 문제