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

Java 정규식 \D 메타문자 완벽 가이드 – 숫자가 아닌 문자 매칭 방법

Java 정규식 \D 메타문자란?

Java 정규식에서 하위 표현식이자 메타문자인 \D숫자가 아닌 문자(non-digit)와 일치합니다. 즉, 0~9를 제외한 모든 문자(알파벳, 공백, 특수문자 등)를 찾을 때 사용됩니다.

참고로 \D는 숫자를 의미하는 \d의 반대 개념으로, 대소문자에 따라 의미가 정반대가 되므로 주의해서 사용해야 합니다.

예제 1 – 문자열에서 숫자가 아닌 문자 개수 세기

다음 예제는 입력 문자열에서 \D 패턴과 일치하는(즉, 숫자가 아닌) 문자의 개수를 계산합니다.

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

public class RegexExample {
   public static void main(String args[]) {
      String regex = "\\D";
      String input = "This is sample text 12 24 56 89 24";

      // Pattern 객체 생성
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(input);

      int count = 0;
      while(m.find()) {
         count++;
      }
      System.out.println("일치 횟수: " + count);
   }
}

실행 결과

일치 횟수: 24

입력 문자열에는 총 10개의 숫자가 포함되어 있으며, 나머지 24개의 문자(알파벳과 공백)가 \D 패턴과 일치했습니다.

예제 2 – 여러 문자열에서 숫자가 아닌 문자 개수 세기

다음 예제는 Scanner를 이용해 사용자로부터 5개의 문자열을 입력받은 뒤, 각 문자열에서 숫자가 아닌 문자가 몇 개인지 출력합니다.

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

public class RegexExample {
   public static void main(String args[]) {
      String regex = "\\D";
      Scanner sc = new Scanner(System.in);

      System.out.println("5개의 문자열을 입력하세요: ");
      String input[] = new String[5];
      for (int i = 0; i < 5; i++) {
         input[i] = sc.nextLine();
      }

      // Pattern 객체 생성
      Pattern p = Pattern.compile(regex);
      System.out.println("각 문자열의 숫자가 아닌 문자 개수: ");

      for(int i = 0; i < 5; i++) {
         // Matcher 객체 생성
         Matcher m = p.matcher(input[i]);
         int count = 0;
         while(m.find()) {
            count++;
         }
         System.out.println("문자열 " + i + ": " + count);
      }
   }
}

실행 결과

5개의 문자열을 입력하세요:
sample 1
12 35 36 63
test 243 663
hello
hello how are you *
각 문자열의 숫자가 아닌 문자 개수:
문자열 0: 7
문자열 1: 3
문자열 2: 6
문자열 3: 5
문자열 4: 19

정리

  • \D : 숫자가 아닌 모든 문자와 일치 ([^0-9]와 동일)
  • \d : 숫자 하나와 일치 ([0-9]와 동일)

이처럼 \D 메타문자를 활용하면 문자열에서 숫자를 제외한 부분만 손쉽게 추출하거나 검증할 수 있어, 입력값 유효성 검사나 데이터 클렌징 작업에 유용하게 사용됩니다.