Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Matcher pattern() 메서드 사용법 – 예제 코드로 쉽게 배우기

Matcher pattern() 메서드란?

java.util.regex.Matcher 클래스는 문자열 매칭(match) 작업을 수행하는 엔진 역할을 하는 클래스입니다. 이 클래스에는 별도의 생성자가 없으며, java.util.regex.Pattern 클래스의 matcher() 메서드를 호출하여 Matcher 객체를 생성하거나 얻을 수 있습니다.

Matcher 클래스의 pattern() 메서드는 현재 Matcher 객체가 해석하고 있는 Pattern 객체를 가져와 반환합니다. 즉, 매칭 작업에 사용된 정규 표현식 패턴을 다시 조회해야 할 때 유용하게 활용됩니다.

예제 1: 생년월일 유효성 검사

다음 예제는 사용자로부터 생년월일(MM/DD/YYYY 형식)을 입력받아 정규 표현식으로 유효성을 검사한 뒤, matcher.pattern() 메서드를 통해 매칭에 사용된 패턴을 출력합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("생년월일을 입력하세요 (MM/DD/YYYY)");
        String date = sc.next();
        String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
        // 패턴 객체 생성
        Pattern pattern = Pattern.compile(regex);
        // Matcher 객체 생성
        Matcher matcher = pattern.matcher(date);
        // 날짜 유효성 검사
        if(matcher.matches())
            System.out.println("유효한 날짜입니다");
        else
            System.out.println("유효하지 않은 날짜입니다");
        // 사용된 패턴 조회
        Pattern p = matcher.pattern();
        System.out.println("입력된 날짜 매칭에 사용된 패턴: \n"+p);
    }
}

실행 결과

생년월일을 입력하세요 (MM/DD/YYYY)
01/21/2019
유효한 날짜입니다
입력된 날짜 매칭에 사용된 패턴:
^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

예제 2: 숫자로 시작하는 문자열 확인

이번 예제는 입력받은 문자열이 숫자로 시작하는지 여부를 정규 표현식으로 검사하고, pattern() 메서드로 사용된 정규식 패턴을 조회하여 함께 출력합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternExample {
    public static void main(String args[]) {
        // 사용자로부터 문자열 입력 받기
        System.out.println("문자열을 입력하세요");
        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);
        Pattern p = matcher.pattern();
        System.out.println("입력된 문자열 매칭에 사용된 패턴: "+p);
        // 매칭 성공 여부 확인
        if(matcher.matches())
            System.out.println("첫 번째 문자는 숫자입니다");
        else
            System.out.println("첫 번째 문자는 숫자가 아닙니다");
    }
}

실행 결과

문자열을 입력하세요
2sample
입력된 문자열 매칭에 사용된 패턴: ^[0-9].*$
첫 번째 문자는 숫자입니다

마무리

pattern() 메서드는 Matcher 객체가 현재 사용 중인 정규 표현식을 그대로 반환하기 때문에, 복잡한 정규식 로직을 디버깅하거나 로그에 적용된 패턴을 기록할 때 특히 유용합니다. Pattern과 Matcher의 관계를 잘 이해해 두면 자바에서 정규 표현식 기반의 문자열 처리를 훨씬 수월하게 구현할 수 있습니다.