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

Java 정규식 문자 클래스의 합집합(Union) 완벽 가이드

문자 클래스(Character Class)란?

Java 정규 표현식에서 문자 클래스는 대괄호 "[ ]"를 사용하여 정의합니다. 이 하위 표현식은 지정된 문자 집합 중 단 하나의 문자와 일치합니다.

예를 들어, 정규식 [abc]는 a, b, c 중 어느 하나의 문자와 일치합니다.

합집합(Union) 문법이란?

문자 클래스의 합집합(Union) 변형을 사용하면 여러 문자 범위를 중첩된 대괄호로 결합할 수 있습니다. 즉, 지정된 여러 범위 중 하나에 속하는 문자를 매칭할 수 있습니다.

예를 들어, 정규식 [a-z[0-9]]소문자(a-z) 또는 숫자(0-9)에 해당하는 단일 문자와 일치합니다. 이처럼 합집합은 두 개 이상의 문자 범위나 집합을 하나의 문자 클래스로 통합할 때 유용합니다.

예제 코드

다음 예제는 입력받은 문자열에서 소문자 또는 숫자에 해당하는 문자의 개수를 세는 프로그램입니다.

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

public class RegexExample1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();

        String regex = "[a-z[0-9]]";

        // 패턴 객체 생성
        Pattern pattern = Pattern.compile(regex);

        // 컴파일된 패턴을 입력 문자열과 매칭
        Matcher matcher = pattern.matcher(input);

        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("Number characters from the ranges (a-z or 0-9): " + count);
    }
}

실행 결과

Enter input text:
sample DATA 12345
Number characters from the ranges (a-z or 0-9): 11

결과 분석

입력 문자열 "sample DATA 12345"를 살펴보면 다음과 같습니다.

  • 소문자: s, a, m, p, l, e → 6개
  • 대문자: D, A, T, A → 매칭 제외 (대문자는 [a-z] 범위에 포함되지 않음)
  • 숫자: 1, 2, 3, 4, 5 → 5개

따라서 소문자 6개 + 숫자 5개 = 총 11개의 문자가 매칭됩니다.

참고 사항

합집합은 두 개 이상의 범위도 조합할 수 있습니다. 예를 들어 [a-z[0-9][A-Z]]처럼 작성하면 영문 대소문자와 숫자 모두를 매칭할 수 있으며, 위 예제에서 대문자까지 포함하고 싶다면 이 패턴을 사용하면 됩니다.