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

Java 정규식으로 전체 단어 일치시키기: \b(단어 경계) 메타 문자 완벽 가이드

Java 정규식에서 특정 단어를 전체 단어 기준으로 정확하게 찾고 싶다면, 메타 문자 \b(word boundary, 단어 경계)를 활용해야 합니다.

\b 메타 문자란?

메타 문자 \b는 단어 경계를 의미하며, 다음 위치에서 일치(match)합니다.

  • 첫 번째 단어 문자 앞
  • 마지막 단어 문자 뒤
  • 단어 문자와 비단어 문자 사이

여기서 단어 문자(word character)는 영문자, 숫자, 밑줄(_)을 말하며, 그 외의 공백이나 특수문자 등은 비단어 문자로 취급됩니다.

전체 단어 매칭 방법

따라서 어떤 단어를 통째로 일치시키고 싶다면, 해당 단어의 앞뒤를 단어 경계 메타 문자로 감싸주면 됩니다.

\btest\b

이 패턴은 testing, contest처럼 "test"가 포함된 더 긴 단어와는 일치하지 않고, 오직 독립된 단어 "test"만 정확히 찾아냅니다.

예제 코드

다음 Java 예제는 사용자로부터 입력받은 문자열에서 "test"라는 단어가 몇 번 등장하는지 세어 출력합니다.

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

public class RegexExample1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("입력 텍스트를 입력하세요: ");
        String input = sc.nextLine();
        String regex = "\\btest\\b";

        // 패턴 객체 생성
        Pattern pattern = Pattern.compile(regex);

        // 컴파일된 패턴을 입력 문자열에 적용
        Matcher matcher = pattern.matcher(input);

        int count = 0;
        while (matcher.find()) {
            count++;
        }
        System.out.println("'test' 단어의 등장 횟수 : " + count);
    }
}

실행 결과

입력 텍스트를 입력하세요:
sample data: test test test
'test' 단어의 등장 횟수 : 3

핵심 정리

  • \b는 실제 문자를 소비하지 않는 제로 폭(zero-width) 어설션입니다.
  • Java 문자열에서 역슬래시(\)는 이스케이프 처리가 필요하므로, 정규식 작성 시 "\\btest\\b"처럼 이중 역슬래시를 사용해야 합니다.
  • 단순히 test라고만 검색하면 부분 문자열까지 모두 매칭되므로, 정확한 단어 검색에는 반드시 \b로 감싸는 것이 좋습니다.