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

Java Pattern 클래스 toString() 메서드 완벽 정리 – 예제 코드로 쉽게 배우기

java.util.regex 패키지의 Pattern 클래스는 정규 표현식(regular expression)이 컴파일된 결과를 나타내는 클래스입니다. 문자열로 작성된 정규 표현식은 Pattern.compile() 메서드를 통해 컴파일되며, 이후 Matcher 객체와 함께 문자열 매칭 작업에 사용됩니다.

이 클래스가 제공하는 toString() 메서드는 현재 Pattern 객체를 컴파일할 때 사용된 정규 표현식을 문자열 형태로 반환합니다. 즉, compile()에 전달했던 원래의 패턴 문자열을 그대로 다시 확인할 수 있어 디버깅이나 로깅 시 유용하게 활용됩니다. 참고로 이 메서드는 pattern() 메서드와 동일한 값을 반환합니다.

예제 1 – 숫자 포함 여부 확인

다음 예제는 사용자로부터 문자열을 입력받아 숫자가 포함되어 있는지 검사하고, 컴파일된 정규 표현식을 toString()으로 출력합니다.

import java.util.Scanner;
import java.util.regex.Pattern;

public class Example {
    public static void main(String args[]) {
        // 문자열 입력 받기
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input string");
        String input = sc.nextLine();

        // 숫자를 찾기 위한 정규 표현식
        String regex = "(\\d)";

        // 정규 표현식 컴파일
        Pattern pattern = Pattern.compile(regex);

        // toString()으로 정규 표현식 출력
        System.out.println("Compiled regular expression: " + pattern.toString());

        // 매칭 여부 확인
        if (pattern.matcher(input).find())
            System.out.println("Given String contains digits");
        else
            System.out.println("Given String does not contain digits");
    }
}

실행 결과

Enter input string
This 7est contain5 di9its in place of certain charac7er5
Compiled regular expression: (\d)
Given String contains digits

실행 결과에서 볼 수 있듯이, toString() 메서드는 컴파일 시 사용된 정규 표현식 (\d)를 그대로 반환하며, 입력 문자열에는 숫자가 포함되어 있으므로 해당 메시지가 출력됩니다.

예제 2 – 특정 문자열로 끝나는지 확인

이번 예제는 문장이 특정 단어로 끝나는지 검사하는 정규 표현식($ 앵커 사용)을 활용합니다.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Example {
    public static void main(String args[]) {
        String regex = "Tutorialspoint$";
        String input = "Hi how are you welcome to Tutorialspoint";

        // 정규 표현식 컴파일
        Pattern pattern = Pattern.compile(regex);
        Matcher match = pattern.matcher(input);

        if (match.find())
            System.out.println("Match found");
        else
            System.out.println("Match not found");

        // toString()으로 정규 표현식 출력
        System.out.println("regular expression: " + pattern.toString());
    }
}

실행 결과

Match found
regular expression: Tutorialspoint$

입력 문자열이 Tutorialspoint로 끝나기 때문에 매칭에 성공하고, toString() 메서드는 사용된 정규 표현식 Tutorialspoint$를 그대로 반환하는 것을 확인할 수 있습니다.

정리

  • Pattern 클래스: 정규 표현식의 컴파일된 표현을 담는 클래스 (java.util.regex 패키지)
  • toString(): 현재 Pattern 객체를 만들 때 사용된 원래 정규 표현식을 문자열로 반환
  • pattern() 메서드와 동일한 결과를 반환하며, 디버깅 및 로그 출력에 유용