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

Java Pattern 클래스의 pattern() 메서드 완벽 가이드 – 예제 코드로 배우기

자바의 java.util.regex 패키지는 문자열에서 특정 패턴을 찾기 위한 다양한 클래스를 제공합니다. 이 패키지에 속한 Pattern 클래스는 정규 표현식(regular expression)이 컴파일된 형태를 나타내며, 정규식 기반 문자열 처리의 핵심 역할을 담당합니다.

Pattern 클래스의 pattern() 메서드는 현재 패턴 객체를 생성할 때 사용된 원본 정규 표현식을 문자열(String) 형태로 가져와 반환합니다. 즉, 컴파일된 패턴으로부터 다시 정규식 소스를 확인할 수 있어 디버깅이나 로깅 작업에 유용하게 활용됩니다.

예제 1: 날짜 유효성 검사 패턴

import java.util.regex.Pattern;
public class PatternExample {
   public static void main(String[] args) {
      String date = "12/09/2019";
      String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
      // 패턴 객체 생성
      Pattern pattern = Pattern.compile(regex);
      if(pattern.matcher(date).matches()) {
         System.out.println("Date is valid");
      } else {
         System.out.println("Date is not valid");
      }
      // 현재 패턴의 정규 표현식 조회
      String regularExpression = pattern.pattern();
      System.out.println("Regular expression: "+regularExpression);
   }
}

실행 결과

Date is valid
Regular expression: ^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

위 예제에서는 MM/DD/YYYY 형식의 날짜를 검증하는 정규 표현식을 사용했습니다. Pattern.compile(regex)으로 패턴 객체를 만든 뒤 입력값과 비교하고, 마지막에 pattern() 메서드를 호출하여 해당 패턴이 어떤 정규식으로 구성되었는지 그대로 출력하는 것을 확인할 수 있습니다.

예제 2: 그룹을 활용한 패턴 매칭

public class PatternExample {
   public static void main(String[] args) {
      String input = "Hi my id is 056E1563";
      // 그룹을 포함한 정규 표현식
      String regex = "(.*)?(\d+)";
      // 패턴 객체 생성
      Pattern pattern = Pattern.compile(regex);
      if(pattern.matcher(input).matches()) {
         System.out.println("Match found");
      } else {
         System.out.println("Match not found");
      }
      // 현재 패턴의 정규 표현식 조회
      String regularExpression = pattern.pattern();
      System.out.println("Regular expression: "+regularExpression);
   }
}

실행 결과

Match found
Regular expression: (.*)?(\d+)

두 번째 예제는 캡처 그룹(capture group)을 포함한 정규 표현식을 사용하여 문자열 내 숫자 패턴을 매칭합니다. 입력 문자열에 일치하는 부분이 존재하므로 "Match found"가 출력되며, pattern() 메서드를 통해 컴파일에 사용된 정규식 (.*)?(\d+)가 동일하게 반환됩니다.

정리

pattern() 메서드는 별도의 매개변수 없이 호출되며, 반환 타입은 String입니다. 컴파일된 Pattern 객체가 어떤 정규 표현식 기반으로 만들어졌는지 확인해야 할 때 간편하게 사용할 수 있습니다.