Java Matcher 클래스란?
java.util.regex.Matcher 클래스는 정규 표현식을 기반으로 다양한 매칭 작업을 수행하는 엔진 역할을 하는 클래스입니다. 이 클래스에는 별도의 생성자가 없으며, java.util.regex.Pattern 클래스의 matcher() 메서드를 호출하여 Matcher 객체를 생성할 수 있습니다.
Matcher 클래스의 matches() 메서드는 대상 문자열이 정규 표현식으로 표현된 패턴과 일치하는지 검사합니다. 문자열이 패턴과 일치하면 true를 반환하고, 일치하지 않으면 false를 반환합니다. 단, 이 메서드가 true를 반환하려면 입력 문자열의 전체 영역(region)이 패턴과 완전히 일치해야 합니다.
주요 특징
- 패턴은 Matcher 객체를 생성할 때 지정한 정규 표현식에서 비롯됩니다.
- 부분 일치가 아니라 문자열 전체가 패턴과 일치해야
true를 반환합니다. - 부분 일치를 확인하려면
find(), 문자열 시작 부분의 일치를 확인하려면lookingAt()메서드를 사용할 수 있습니다.
예제 코드
다음 예제는 사용자로부터 문자열을 입력받아, 첫 번째 문자가 숫자인지 확인하는 프로그램입니다.
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchesExample {
public static void main(String args[]) {
// 사용자로부터 문자열 입력 받기
System.out.println("Enter a String");
Scanner sc = new Scanner(System.in);
String input = sc.next();
// 숫자로 시작하는 문자열을 찾기 위한 정규 표현식
String regex = "^[0-9].*$";
// 정규 표현식 컴파일
Pattern pattern = Pattern.compile(regex);
// Matcher 객체 가져오기
Matcher matcher = pattern.matcher(input);
// 일치 여부 확인
boolean bool = matcher.matches();
if(bool) {
System.out.println("First character is a digit");
} else {
System.out.println("First character is not a digit");
}
}
}
실행 결과
Enter a String
4hiipla
First character is a digit
코드 설명
^[0-9].*$: 문자열의 시작(^)이 0~9 사이의 숫자이고, 그 뒤에 임의의 문자들이 이어지는 패턴을 의미합니다.Pattern.compile(regex): 정규 표현식을 컴파일하여 Pattern 객체를 생성합니다.pattern.matcher(input): 입력 문자열에 대한 Matcher 객체를 반환합니다.matcher.matches(): 입력 문자열 전체가 패턴과 일치하는지 검사한 결과를 boolean 값으로 반환합니다.