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

예제로 배우는 Java Pattern 클래스의 UNICODE_CASE 필드


Pattern.UNICODE_CASE 필드는 유니코드 인식 대소문자 변환(Unicode-aware case folding)을 활성화하는 플래그입니다.

이 플래그를 compile() 메서드에 CASE_INSENSITIVE 플래그와 함께 지정하면, 정규 표현식으로 유니코드 문자를 검색할 때 대문자 형태와 소문자 형태의 문자가 모두 일치하도록 처리됩니다. 즉, ASCII 범위를 넘어선 다양한 언어권의 문자에 대해서도 대소문자를 구분하지 않는 매칭이 가능해집니다.

참고로 CASE_INSENSITIVE 플래그만 단독으로 사용할 경우 기본적으로 ASCII 문자에 대해서만 대소문자 무시 매칭이 적용되므로, 유니코드 전체 범위를 대상으로 하려면 반드시 UNICODE_CASE를 함께 사용해야 합니다.

예제

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

public class UNICODE_CASE_Example {
    public static void main(String args[]) {
        // 대문자 Þ(Þ)를 검색 패턴으로 사용
        String regex = "\u00de";
        
        // 정규 표현식 컴파일 (UNICODE_CASE + CASE_INSENSITIVE 플래그 적용)
        Pattern pattern = Pattern.compile(regex, Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
        
        // 테스트할 문자열 배열
        String str[] = {"\u00de", "\u00fe", "\u00ee", "\u00ce"};
        
        for (String ele : str) {
            Matcher matcher = pattern.matcher(ele);
            if (matcher.matches()) {
                System.out.println(ele + " is a match for " + regex);
            } else {
                System.out.println(ele + " is not a match for " + regex);
            }
        }
    }
}

출력 결과

Þ is a match for Þ
þ is a match for Þ
î is not a match for Þ
Î is not a match for Þ