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

Java Matcher start() 메서드 완벽 정리: 예제 코드와 함께 배우기

java.util.regex.Matcher 클래스는 다양한 매칭(match) 연산을 수행하는 엔진 역할을 하는 클래스입니다. 이 클래스는 별도의 생성자가 없으며, java.util.regex.Pattern 클래스의 matcher() 메서드를 통해 객체를 생성하거나 얻을 수 있습니다.

Matcher 클래스의 start() 메서드는 매칭된 문자의 시작 인덱스(위치)를 반환합니다. 정규식으로 문자열을 검색할 때 해당 문자가 몇 번째 위치에서 발견되었는지 확인할 수 있어 매우 유용합니다.

start() 메서드 동작 방식

정규 표현식에서 대괄호 [...]는 괄호 안에 지정된 문자들과 일치하는지 검사하는 하위 표현식입니다. 아래 예제에서는 이를 활용해 입력 문자열에서 문자 't'를 찾아 그 위치를 출력합니다.

예제의 처리 과정은 다음과 같습니다.

  • compile() 메서드를 사용하여 정규 표현식을 컴파일합니다.
  • 컴파일된 패턴으로부터 Matcher 객체를 얻습니다.
  • find() 메서드로 매칭이 발견될 때마다 start() 메서드를 호출하여 시작 인덱스를 구합니다.

예제 코드

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StartExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();
        String regex = "[t]";
        // 패턴 객체 생성
        Pattern pattern = Pattern.compile(regex);
        // 문자열에서 컴파일된 패턴 매칭
        Matcher matcher = pattern.matcher(input);
        while (matcher.find()) {
            int start = matcher.start();
            System.out.println(start);
        }
    }
}

실행 결과

Enter input text:
Hello how are you welcome to Tutorialspoint
26
31
42

결과 분석

입력 문자열에 문자 't'가 세 번 등장했기 때문에, 실행 결과로 세 개의 인덱스 값(각 문자의 위치)이 출력된 것을 확인할 수 있습니다. 즉, 26번째, 31번째, 42번째 위치에서 각각 't'가 발견된 것입니다.

이처럼 start() 메서드는 find() 메서드와 함께 사용하면 정규식으로 찾은 모든 매칭 결과의 정확한 위치를 손쉽게 추적할 수 있습니다. 문자열 분석, 로그 파싱, 텍스트 하이라이팅 등 다양한 실무 시나리오에서 활용도가 높으니 꼭 익혀두시길 권장합니다.