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

Java 정규식 \p{IsLatin} 문자 클래스로 라틴 문자 매칭하기

\p{IsLatin}은(는) Java 정규 표현식에서 라틴(Latin) 문자와 일치시키는 데 사용되는 문자 클래스입니다. 이 클래스는 유니코드 스크립트 'Latin'에 속하는 모든 문자를 매칭하므로, 영어 알파벳뿐만 아니라 é, á, ñ처럼 악센트가 포함된 문자도 함께 찾아낼 수 있습니다.

예제 1: 라틴 문자 개수 세기

다음 예제는 사용자로부터 문자열을 입력받아 \p{IsLatin}을 사용해 문자열에 포함된 라틴 문자의 개수를 세는 프로그램입니다.

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{IsLatin}";
        // 정규 표현식 컴파일
        Pattern pattern = Pattern.compile(regex);
        // 매처(Matcher) 객체 생성
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("라틴 문자의 개수: "+count);
    }
}

실행 결과

문자열을 입력하세요
cé dé há ó
라틴 문자의 개수: 7

위 실행 결과에서 입력 문자열 "cé dé há ó"는 공백을 제외한 7개의 문자가 모두 라틴 문자에 해당하므로 개수가 7로 출력됩니다.

예제 2: 문자열에 라틴 문자 포함 여부 확인

다음 예제는 matches() 메서드와 정규 표현식 ^.*\\p{IsLatin}.*을 사용해 입력 문자열에 라틴 문자가 포함되어 있는지 확인합니다.

import java.util.Scanner;
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{IsLatin}.*";
        boolean result = input.matches(regex);
        if(result) {
            System.out.println("입력한 문자열에 라틴 문자가 포함되어 있습니다");
        } else {
            System.out.println("입력한 문자열에 라틴 문자가 포함되어 있지 않습니다");
        }
    }
}

실행 결과

문자열을 입력하세요
sample text y e
입력한 문자열에 라틴 문자가 포함되어 있습니다

이처럼 \p{IsLatin} 문자 클래스를 활용하면 문자열 내 라틴 문자의 존재 여부를 간단하게 검사할 수 있습니다. 참고로 Java에서는 \p{IsLatin} 외에도 \p{IsGreek}, \p{IsCyrillic} 등 다양한 유니코드 스크립트 문자 클래스를 지원하므로, 필요에 따라 다른 언어권 문자도 같은 방식으로 처리할 수 있습니다.