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

Java MatchResult groupCount() 메서드 완벽 가이드 – 예제 코드와 실행 결과

java.util.regex.MatchResult 인터페이스는 정규식 매칭 결과를 조회할 수 있는 다양한 메서드를 제공합니다.

이 인터페이스의 객체는 Matcher 클래스의 toMatchResult() 메서드를 통해 얻을 수 있습니다. 이 메서드는 현재 매처(matcher)의 매칭 상태를 나타내는 MatchResult 객체를 반환하며, 이를 통해 매칭 결과를 자유롭게 확인하고 활용할 수 있습니다.

이 중 groupCount() 메서드는 현재 객체의 정규식 패턴에 포함된 캡처 그룹(capturing group)의 개수를 세어 반환합니다. 참고로 전체 매칭을 의미하는 0번 그룹은 개수에서 제외됩니다.

groupCount() 메서드의 특징

  • 정규식 패턴 내 괄호 ()로 묶인 그룹의 총 개수를 int 타입으로 반환합니다.
  • 그룹 번호는 1부터 시작하며, 0번 그룹(전체 매칭)은 포함되지 않습니다.
  • 매칭 성공 여부와 관계없이 패턴에 정의된 그룹 개수를 기준으로 동작합니다.

예제 코드

다음 예제는 사용자로부터 입력을 받아 정규식 (.*)(\d+)(.*) 패턴과 매칭한 후, groupCount() 메서드로 그룹의 개수를 출력합니다.

import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GroupCount {
    public static void main(String args[]) {
        String regex = "(.*)(\\d+)(.*)";

        // 사용자로부터 입력 받기
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input text: ");
        String input = sc.nextLine();

        // Pattern 클래스 인스턴스 생성
        Pattern pattern = Pattern.compile(regex);

        // Matcher 클래스 인스턴스 생성
        Matcher matcher = pattern.matcher(input);

        // 매칭 여부 확인
        if (matcher.find()) {
            System.out.println("Match found");
        }

        // MatchResult 객체 얻기
        MatchResult res = matcher.toMatchResult();

        // 그룹 개수 출력
        int count = res.groupCount();
        System.out.println("No.of groups: " + count);
    }
}

실행 결과

Enter input text:
This is a sample Text, 123
Match found
No.of groups: 3

결과 분석

위 예제에서 사용된 정규식 (.*)(\d+)(.*)는 세 개의 캡처 그룹을 포함합니다.

  1. 첫 번째 그룹 (.*) – 숫자 앞부분의 임의의 문자열
  2. 두 번째 그룹 (\d+) – 하나 이상의 숫자
  3. 세 번째 그룹 (.*) – 숫자 뒷부분의 임의의 문자열

따라서 입력 문자열 "This is a sample Text, 123"이 매칭되면 groupCount() 메서드는 그룹 개수인 3을 반환하게 됩니다.