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

Java 정규식 POSIX 문자 클래스 \p{Upper} – 대문자 매칭과 개수 세기

\p{Upper}는 Java 정규식에서 지원하는 POSIX 문자 클래스 중 하나로, 알파벳 대문자(A~Z)와 일치하는 패턴입니다. 이 클래스를 활용하면 문자열 전체가 대문자로만 구성되어 있는지 검사하거나, 문자열에 포함된 대문자의 개수를 손쉽게 계산할 수 있습니다.

예제 1: 대문자로만 이루어진 문자열 찾기

아래 예제는 정규식 ^\p{Upper}+$을 사용해 사용자가 입력한 5개의 문자열 중에서 오직 대문자로만 구성된 문자열을 골라냅니다.

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

public class Posix_UpperExample {
    public static void main(String args[]) {
        // 대문자와 일치시키기 위한 정규식
        String regex = "^\\p{Upper}+$";
        // 입력 데이터 받기
        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]);
            if (m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

실행 결과

5개의 문자열을 입력하세요:
RAJU
RAMU
RamANi
raghav#
madhavi**
대문자로만 구성된 문자열:
RAJU
RAMU

패턴 양 끝의 ^(문자열 시작)와 $(문자열 끝) 앵커 덕분에, 문자열의 일부가 아니라 전체가 대문자일 때만 일치합니다. 따라서 소문자나 특수문자가 섞인 RamANi, raghav#, madhavi**는 모두 제외됩니다.

예제 2: 문자열 내 대문자 개수 세기

두 번째 예제는 \p{Upper} 패턴과 find() 메서드를 조합하여 입력 문자열에 포함된 대문자의 개수를 계산합니다.

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

public class Example {
    public static void main(String args[]) {
        // 사용자로부터 문자열 입력받기
        System.out.println("문자열을 입력하세요");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        // 정규식 정의
        String regex = "\\p{Upper}";
        // 정규식 컴파일
        Pattern pattern = Pattern.compile(regex);
        // Matcher 객체 가져오기
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("입력한 문자열 내 대문자 개수: " + count);
    }
}

실행 결과 1

문자열을 입력하세요
Hello How Are You
입력한 문자열 내 대문자 개수: 4

Hello How Are You에는 H, H, A, Y로 총 4개의 대문자가 포함되어 있으며, 각 대문자가 하나씩 일치하여 4가 출력됩니다.

실행 결과 2

문자열을 입력하세요
WELCOME TO TUTORIALSPOINT
입력한 문자열 내 대문자 개수: 23

공백을 제외한 모든 문자가 대문자인 WELCOME TO TUTORIALSPOINT의 경우, 각 대문자가 하나씩 일치하여 총 23개가 카운트됩니다.