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

Java Matcher end() 메서드 완벽 정리 – 예제 코드와 실행 결과로 이해하기

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

Matcher 클래스의 end() 메서드는 현재 객체가 나타내는 마지막 매칭 결과의 끝 위치(오프셋)를 반환합니다. 즉, 마지막으로 일치한 문자 바로 뒤의 인덱스 값을 알려줍니다.

정규 표현식에서 하위 표현식 [...](문자 클래스)은 대괄호 안에 지정된 문자들을 입력 문자열에서 찾아 매칭합니다. 아래 예제에서는 이 표현식을 사용해 문자 t를 찾는 방법을 살펴봅니다.

예제의 처리 흐름

  • compile() 메서드를 사용하여 정규 표현식을 컴파일합니다.

  • 컴파일된 패턴으로부터 Matcher 객체를 얻습니다.

  • find() 메서드로 매칭이 발견될 때마다 end() 메서드를 호출하여 오프셋 값을 출력합니다.

예제 코드

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EndExample {
    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);
        int count = 0;
        while (matcher.find()) {
            int end = matcher.end();
            System.out.println(end);
        }
    }
}

실행 결과

Enter input text:
Hello how are you welcome to Tutorialspoint
27
32
43

결과 분석

입력 문자열에 문자 t가 세 번 등장했기 때문에, 세 개의 오프셋 값(각 문자가 나타난 직후의 위치 인덱스)이 출력되는 것을 확인할 수 있습니다.

여기서 오프셋이란 해당 문자가 매칭된 직후의 위치를 의미하며, 인덱스는 0부터 시작한다는 점에 유의하세요. 예를 들어 첫 번째 출력값인 27은 입력 문자열에서 26번째 인덱스에 있던 't' 문자 바로 다음 위치를 가리킵니다.

참고: 관련 메서드

  • start(): 마지막 매칭이 시작된 인덱스를 반환합니다.

  • end(): 마지막 매칭이 끝난 직후의 인덱스(오프셋)를 반환합니다.

  • group(): 마지막 매칭된 실제 문자열을 반환합니다.