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()메서드와 동일한 결과를 반환하며, 디버깅 및 로그 출력에 유용