정규식에서 메타 문자 \b는 단어의 경계(word boundary)를 의미하고, [a-zA-Z]는 영어 알파벳 한 글자(대문자와 소문자 모두 포함)와 일치합니다. 따라서 이 두 가지를 조합한 표현식 \b[a-zA-Z]는 모든 단어 경계 바로 뒤에 위치한 알파벳 한 글자, 즉 각 단어의 첫 글자와 일치하게 됩니다.
구현 절차
Java에서 각 단어의 첫 글자를 추출하려면 다음 단계를 따르면 됩니다.
Pattern 클래스의 compile() 메서드를 사용하여 위 정규식을 컴파일합니다.
Pattern 클래스의 matcher() 메서드에 입력 문자열을 매개변수로 전달하여 Matcher 객체를 생성합니다.
find() 메서드로 일치 항목을 순회하면서, group() 메서드를 호출해 매칭된 문자를 가져옵니다.
예제 코드
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FirstLetterExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("샘플 텍스트를 입력하세요: ");
String data = sc.nextLine();
String regex = "\\b[a-zA-Z]";
// Pattern 객체 생성
Pattern pattern = Pattern.compile(regex);
// Matcher 객체 생성
Matcher matcher = pattern.matcher(data);
System.out.println("입력 문자열에서 각 단어의 첫 글자: ");
while(matcher.find()) {
System.out.print(matcher.group()+" ");
}
}
}실행 결과
샘플 텍스트를 입력하세요: National Intelligence Agency Research & Analysis Wing 입력 문자열에서 각 단어의 첫 글자: N I A R A W
위 예제에서 볼 수 있듯이, 입력된 문장의 각 단어에서 첫 글자만 골라내어 공백으로 구분해 출력됩니다. 이 기법은 이니셜 추출, 약어 자동 생성 등 다양한 텍스트 처리 작업에 활용할 수 있습니다.