어제 오늘 내일

[Java Pattern & Matcher] 정규표현식 클래스 개요 본문

IT/Java

[Java Pattern & Matcher] 정규표현식 클래스 개요

hi.anna 2025. 10. 2. 07:37

Java에서 문자열을 다룰 때 단순한 split()이나 replace() 만으로는 부족한 경우가 많습니다. 복잡한 문자열 패턴을 검색하거나 치환하려면 정규표현식(Regex) 을 사용해야 하는데, 이때 활용되는 클래스가 바로 PatternMatcher입니다.

 

1. Pattern 클래스 개요

  • 정규표현식을 컴파일해서 객체로 표현하는 클래스
  • 주요 메소드
    • Pattern.compile(String regex) : 정규표현식을 컴파일하여 Pattern 객체 생성
    • split(String input) : 정규식 기준으로 문자열 분리
    • matcher(CharSequence input) : 특정 문자열에 대해 Matcher 객체 생성

 

2. Matcher 클래스 개요

  • Pattern 객체를 이용해 특정 문자열에 대해 검색을 수행하는 클래스
  • 주요 메소드
    • find() : 패턴과 일치하는 부분 문자열 찾기
    • matches() : 문자열 전체가 정규식과 일치하는지 검사
    • group() : 매칭된 문자열 반환
    • start() / end() : 매칭된 부분의 시작, 끝 인덱스 반환
    • replaceAll(String replacement) : 정규식과 일치하는 부분을 치환

 

3. 간단한 예제

import java.util.regex.*;

public class PatternMatcherExample {
    public static void main(String[] args) {
        String input = "Java 17, Python 3.10, JavaScript ES6";
        Pattern pattern = Pattern.compile("\\bJava\\b");
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            System.out.println("일치하는 단어: " + matcher.group() + 
                               " (위치: " + matcher.start() + ")");
        }
    }
}

예제 설명

  1. String input = "Java 17, Python 3.10, JavaScript ES6";
    → 검색 대상 문자열입니다.
  2. Pattern pattern = Pattern.compile("\\bJava\\b");
    → 정규표현식 \\bJava\\b를 패턴으로 컴파일합니다.
    • \\b는 단어 경계를 의미합니다.
    • 따라서 "JavaScript" 안의 "Java"는 제외되고, 독립적인 "Java"만 매칭됩니다.
  3. Matcher matcher = pattern.matcher(input);
    → 입력 문자열과 패턴을 연결해 Matcher 객체를 생성합니다.
  4. while (matcher.find())
    → 입력 문자열을 순회하면서 패턴과 일치하는 부분을 찾습니다.
  5. matcher.group()
    → 매칭된 실제 문자열을 반환합니다.
  6. matcher.start()
    → 매칭된 문자열이 시작되는 인덱스를 반환합니다.

출력 결과는 다음과 같습니다:

일치하는 단어: Java (위치: 0)

즉, 입력 문자열에서 "JavaScript" 안의 "Java"는 무시되고, 맨 앞 "Java"만 인식된 것을 확인할 수 있습니다.

 

 

 

반응형
Comments