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로 감싸는 것이 좋습니다.