정규식에서 \p{InGreek}은 그리스(Greek) 문자 블록에 속한 모든 문자와 일치하는 POSIX 스타일의 문자 클래스입니다. 이 패턴을 활용하면 입력된 문자열에서 그리스 문자를 쉽게 찾거나 개수를 세거나, 특정 문자열에 그리스 문자가 포함되어 있는지 검증할 수 있습니다.
예제 1: 문자열에서 그리스 문자 개수 세기
아래 예제는 사용자로부터 문자열을 입력받아, 정규식 \p{InGreek}을 컴파일한 후 Matcher 객체를 통해 해당 문자열에 포함된 그리스 문자의 개수를 출력합니다.
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example1 {
public static void main(String args[]) {
// 사용자로부터 문자열 입력받기
System.out.println("문자열을 입력하세요");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// 정규식 정의
String regex = "\\p{InGreek}";
// 정규식 컴파일
Pattern pattern = Pattern.compile(regex);
// Matcher 객체 생성
Matcher matcher = pattern.matcher(input);
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println("그리스 문자 개수: " + count);
}
}실행 결과
문자열을 입력하세요 sample text αγ ηθ ξψ 그리스 문자 개수: 6
예제 2: 문자열에 그리스 문자 포함 여부 확인
다음 예제는 ^.+\\p{InGreek}.+ 패턴과 matches() 메서드를 사용하여, 입력된 문자열에 그리스 문자가 하나 이상 포함되어 있는지 확인합니다. 조건에 맞으면 포함되었다는 메시지를, 그렇지 않으면 포함되지 않았다는 메시지를 출력합니다.
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{InGreek}.+";
boolean result = input.matches(regex);
if(result) {
System.out.println("입력한 문자열에는 그리스 문자가 포함되어 있습니다.");
} else {
System.out.println("입력한 문자열에는 그리스 문자가 포함되어 있지 않습니다.");
}
}
}실행 결과
문자열을 입력하세요 sample text αγ 입력한 문자열에는 그리스 문자가 포함되어 있습니다.
정리
\p{InGreek}은 유니코드 그리스 문자 블록(Α~Ω, α~ω 등)에 속한 문자만 대상으로 하며, 한글이나 영문자 등 다른 문자는 매칭하지 않습니다. 다국어 텍스트 처리, 입력값 유효성 검사, 특정 언어권 문자 필터링 등에 유용하게 활용할 수 있습니다.