어제 오늘 내일

[Java Matcher] find() - 문자열에서 패턴 찾기 본문

IT/Java

[Java Matcher] find() - 문자열에서 패턴 찾기

hi.anna 2025. 10. 4. 10:17

문자열이 특정 패턴을 포함하는지 확인하거나, 여러 번 등장하는 패턴을 순차적으로 찾고 싶을 때는 Matcher.find() 메소드를 사용합니다. matches()가 문자열 전체 일치를 검사하는 반면, find()부분 일치를 탐색한다는 점이 큰 차이입니다.

 
 

1.  메소드 개요

  • 메소드 시그니처
    public boolean find() public boolean find(int start)
  • 문자열 내에서 패턴과 일치하는 부분이 있으면 true, 없으면 false를 반환합니다.
  • find(int start)는 지정한 인덱스부터 검색을 시작합니다.

 

2. 기본 사용 예제

import java.util.regex.*;

public class MatcherFindExample {
    public static void main(String[] args) {
        String input = "Java, JavaScript, Python, Java";

        Pattern pattern = Pattern.compile("Java");
        Matcher matcher = pattern.matcher(input);

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

예제 설명

  1. Pattern.compile("Java")"Java"라는 단어를 찾는 패턴을 생성합니다.
  2. matcher.find() → 입력 문자열을 순차적으로 검색하면서 "Java"가 등장할 때마다 true를 반환합니다.
  3. 실행 결과:
일치: Java (위치: 0)
일치: Java (위치: 23)

즉, 문자열 내에서 "Java"라는 단어가 두 번 발견되었습니다.

 
 

3. 숫자 추출 예제

import java.util.regex.*;

public class MatcherFindDigitsExample {
    public static void main(String[] args) {
        String input = "Order123, Code456, Item789";

        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            System.out.println("숫자 발견: " + matcher.group());
        }
    }
}

실행 결과

숫자 발견: 123
숫자 발견: 456
숫자 발견: 789

정규표현식 \\d+를 이용해 문자열 내 모든 숫자를 순서대로 추출할 수 있습니다.

 
 

4. 활용 사례

  • 문자열 내 특정 단어 또는 패턴 검색
  • 로그 파일에서 에러 코드, 날짜, IP 주소 등 추출
  • 여러 번 등장하는 패턴을 순차적으로 처리

 

정리

Matcher.find() 메소드는 문자열 전체가 아닌 부분에서 정규표현식과 일치하는 패턴을 찾을 때 유용합니다. 반복문과 함께 사용하면 문자열 내 여러 패턴을 한 번에 처리할 수 있어 데이터 추출 및 분석에서 매우 자주 활용됩니다.

반응형
Comments