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

Java MatchResult group(int group) 메서드 완벽 가이드 – 예제 코드 포함

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

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

group(int group) 메서드란?

MatchResult 인터페이스의 group(int group) 메서드는 특정 그룹 번호를 나타내는 정수 값을 매개변수로 받습니다. 그리고 마지막으로 수행된 매칭 작업에서 해당 그룹에 일치한 입력 시퀀스의 부분 문자열(substring)을 문자열 형태로 반환합니다.

참고로 정규식에서 그룹은 괄호 ()로 묶인 패턴을 의미하며, 왼쪽부터 순서대로 1번, 2번, 3번...과 같이 번호가 매겨집니다. 전체 매칭 결과는 group(0)으로 확인할 수 있습니다.

예제 코드

import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupExample {
    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 res = matcher.toMatchResult();
        String matchedData = res.group(2);
        System.out.println(matchedData);
    }
}

코드 설명

위 예제에서 사용된 정규식 (.*)(\d+)(.*)은 세 개의 그룹으로 구성되어 있습니다. 첫 번째 그룹 (.*)은 임의의 문자열, 두 번째 그룹 (\d+)은 하나 이상의 숫자, 세 번째 그룹 (.*)은 나머지 임의의 문자열에 해당합니다. 따라서 res.group(2)를 호출하면 입력 텍스트에서 추출된 숫자 부분이 반환됩니다.

실행 결과

Enter input text:
This is a sample Text, 123
Match found
3

입력된 문장 "This is a sample Text, 123"에서 두 번째 그룹(\d+)에 해당하는 숫자가 추출되어 출력되는 것을 확인할 수 있습니다. 이처럼 group(int group) 메서드를 활용하면 복잡한 정규식 패턴에서 원하는 특정 부분만 손쉽게 가져올 수 있습니다.