2011-10-31 3 views
0

Stringmatches 편의 방법에서 Java 정규 표현식에 액세스하거나 긴 경로로 이동하여 Pattern 등을 만들 수 있음을 이해합니다. 다음 코드는 실제로 2 "예! " 라인을 출력에 연결합니다. "예!"라고 인쇄됩니다. 선 및 "아니오"선. 내가 뭘 놓치고 있니?자바 아주 간단한 정규 표현식 퍼즐

import java.util.regex.*; 

public class TestRegex { 
public static void main(String[] args) { 
    String pattern = "html"; 
    String input = "somehtml.txt"; 

    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(input); 

    if(m.find()) { 
     System.out.println("Yes!"); 
    } 
    else { 
     System.out.println("no"); 
    } 

    if(input.matches(pattern)) { 
     System.out.println("Yes!"); 
    } 
    else { 
     System.out.println("no"); 
    } 

} 

} 

출력 : Win7에 64 비트에

Yes! 
no 

Java 버전 1.6.

C : \ 사용자 \ 마이클 스미스> 자바 -version은 자바 버전 "1.6.0_24" 자바 (TM) SE 런타임 환경 (빌드 1.6.0_24-B07) 자바 핫스팟 (TM) 64 비트 서버 VM (빌드 19.1-b02, 혼합 모드)

답변

5

matches() 정규 표현식과 일치하는 전체 문자열을 검사합니다. find()은 문자열 어딘가에 만 일치하는 문자열을 찾습니다.

2

String#Matches 메서드는 전체 입력 텍스트와 패턴을 비교합니다. 이것이 코드가 no 번 다시 인쇄하는 이유입니다. Matcher#Find 입력을 검색하여 입력에서 다음 일치 항목 하위 시퀀스를 찾습니다.