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

Java 정규식 문자 클래스 \p{javaUpperCase} 완벽 가이드


정규식 문자 클래스 \p{javaUpperCase}대문자와 일치하는 패턴입니다. 이 클래스는 특정 문자를 java.lang.Character 클래스의 isUpperCase() 메서드에 전달했을 때 true를 반환하는 모든 문자와 매칭됩니다.

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

다음 예제는 사용자로부터 문자열을 입력받은 후, 정규식을 사용하여 문자열에 포함된 대문자의 개수를 계산합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
    public static void main(String args[]) {
        // 사용자로부터 문자열 입력 받기
        System.out.println("Enter a string");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        // 정규식 정의
        String regex = "[\\p{javaUpperCase}]";
        // 정규식 컴파일
        Pattern pattern = Pattern.compile(regex);
        // Matcher 객체 생성
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("Number of upper case characters: "+count);
    }
}

실행 결과

Enter a string
This IS A sample TExt
Number of upper case characters: 6

입력된 문자열 "This IS A sample TExt"에는 총 6개의 대문자(T, I, S, A, T, E)가 포함되어 있으므로 결과값으로 6이 출력됩니다.

예제 2: 대문자로만 구성된 문자열 찾기

이번 예제는 여러 개의 입력 문자열 중에서 오직 대문자로만 구성된 문자열만 골라내는 방법을 보여줍니다. 정규식 ^\p{javaUpperCase}+$는 문자열의 시작(^)부터 끝($)까지 하나 이상의 대문자(+)로 이루어져 있는지 검사합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
    public static void main( String args[] ) {
        // 대문자로만 구성된 문자열과 일치하는 정규식
        String regex = "^\\p{javaUpperCase}+$";
        // 입력 데이터 받기
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter 5 input strings: ");
        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("Strings with only upper case characters: ");
        for(int i=0; i<5;i++) {
            // Matcher 객체 생성
            Matcher m = p.matcher(input[i]);
            if(m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

실행 결과

Enter 5 input strings:
Raju
RAMU
rahman
radha
SUnDar*
Strings with only upper case characters:
RAMU

위 실행 결과에서 볼 수 있듯이, 다섯 개의 입력 문자열 중 "RAMU"만이 전부 대문자로 구성되어 있기 때문에 조건에 부합하는 유일한 문자열로 출력됩니다. 나머지 문자열들은 소문자나 특수문자가 섞여 있어 패턴과 일치하지 않습니다.