2012-09-12 2 views
2

나는이 유형의 질문이 여기에 많이 게시 될 것이라고 확신한다. 나는이 정규식이 :왜이 정규식이 일치하지 않습니까?

^\[.*\] 

[Test]Hi there 

그리고 RegexPal에 따라 일치해야합니다, 그것은 않습니다. 그러나,이 자바 SCCE에서하지 않습니다 :

final String pat = "^\\[.*\\]"; 
final String str = "[Test]Hi there"; 
System.out.println(pat); 
System.out.println(str); 
System.out.println(str.matches(pat)); 

출력 :

^\[.*\] 
[Test]Hi there 
false 

왜 일치하지 않는 이유는 무엇입니까? 자바

답변

10

"match"는 "전체 문자열과 일치"의미

시도는 영역 전체를이 패턴과 일치 할 수 있습니다. 당신의 정규식은 지난 ] 후 모든 문자를 허용하지 않기 때문에

IT는 ] 후 문자가 아무것도 "일치"하지 않습니다. 당신은 문자열 이 정규식과 일치 것 뭔가가 들어 있는지 확인하기 위해 find을 사용할 수 있습니다

은 (당신이 ^를 사용하기 때문에 여전히, 시작 부분에 고정되어야 할 것이다). 즉

^\[.*\]하지경기[Test]Hi there하지만 [Test]Hi there[Test]를 찾을 수 있습니다.

+0

패턴을'(? s)^\ [. * \]. *'로 확장했습니다. –

1

String#match이 전체 문자열에 대한 귀하의 정규식과 일치하도록 노력할 것 때문에. 찾고있는 것은 Pattern.compile(pat).matcher(str).find()입니다 (Matcher 참조).

관련 문제