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

Java 정규식 \d 메타문자 완벽 가이드 – 숫자 매칭 방법과 실전 예제

Java 정규식에서 하위 표현식이자 메타문자인 \d숫자(0~9) 한 자리와 일치하는 패턴입니다. 문자열에서 특정 숫자를 찾거나, 입력값이 올바른 형식의 숫자로 이루어져 있는지 검증할 때 널리 사용됩니다.

참고로 Java에서 정규식을 문자열로 작성할 때는 역슬래시(\)가 이스케이프 문자로 해석되기 때문에, 코드 내에서는 "\\d"처럼 역슬래시를 두 번 작성해야 합니다.

예제 1: \d로 숫자 매칭 횟수 세기

다음 예제는 \d 24 패턴을 사용하여 입력 문자열에서 "숫자 한 개 + 공백 + 24" 형태와 일치하는 부분이 몇 번 나타나는지 세어봅니다.

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

public class RegexExample {
    public static void main(String args[]) {
        String regex = "\\d 24";
        String input = "This is sample text 12 24 56 89 24";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(input);
        int count = 0;
        while(m.find()) {
            count++;
        }
        System.out.println("매칭 횟수: " + count);
    }
}

실행 결과

매칭 횟수: 2

입력 문자열에는 "2 24"와 "9 24"라는 두 개의 조각이 패턴과 일치하므로 결과는 2가 됩니다.

예제 2: 10자리 전화번호 유효성 검사

다음은 사용자로부터 입력받은 값이 정확히 10자리 숫자로만 이루어져 있는지 검증하는 프로그램입니다. 여기서는 수량자(quantifier) {10}을 함께 사용하여 \d가 정확히 10번 반복되는 경우에만 매칭되도록 했습니다.

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

public class Test {
    public static void main(String args[]) {
        String regex = "\\d{10}";
        Scanner sc = new Scanner(System.in);
        System.out.println("전화번호를 입력하세요 (10자리 숫자): ");
        String input = sc.nextLine();
        // Pattern 객체 생성
        Pattern p = Pattern.compile(regex);
        // Matcher 객체 생성
        Matcher m = p.matcher(input);
        if(m.find()) {
            System.out.println("OK");
        } else {
            System.out.println("잘못된 입력입니다");
        }
    }
}

실행 결과 1: 올바른 입력

전화번호를 입력하세요 (10자리 숫자):
9848022338
OK

실행 결과 2: 잘못된 입력

전화번호를 입력하세요 (10자리 숫자):
545
잘못된 입력입니다

첫 번째 실행에서는 10자리 숫자가 입력되어 "OK"가 출력되었지만, 두 번째 실행에서는 3자리만 입력되어 패턴과 일치하지 않으므로 "잘못된 입력입니다"가 출력됩니다.

정리

  • \d: 숫자 한 자리(0~9)와 일치하는 메타문자
  • {n}: 바로 앞의 패턴이 정확히 n번 반복됨을 의미하는 수량자
  • Java 코드에서는 이스케이프 처리를 위해 \\d로 작성해야 함

이처럼 \d는 전화번호, 우편번호, ID 등 숫자 기반 데이터의 형식 검증에 활용할 수 있는 가장 기본적이면서도 유용한 정규식 요소입니다.