java.util.regex.MatchResult 인터페이스는 정규식 매칭 작업의 결과를 조회할 수 있는 다양한 메서드를 제공합니다. 매칭된 문자열이나 그룹 정보를 손쉽게 확인할 때 유용하게 사용됩니다.
MatchResult 객체 얻는 방법
MatchResult 객체는 Matcher 클래스의 toMatchResult() 메서드를 통해 얻을 수 있습니다. 이 메서드는 현재 매처(matcher)의 매칭 상태를 나타내는 MatchResult 객체를 반환하며, 이를 통해 매칭 결과를 별도로 저장하거나 참조할 수 있습니다.
group() 메서드란?
MatchResult 인터페이스의 group() 메서드는 마지막으로 수행된 매칭에서 입력 시퀀스와 일치한 부분 문자열(substring)을 문자열 형태로 반환합니다. 즉, 정규식 패턴과 일치한 전체 텍스트를 그대로 가져올 수 있습니다.
예제 코드
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();
System.out.println(matchedData);
}
}실행 결과
Enter input text: This is a sample Text, 123 Match found This is a sample Text, 123
코드 설명
위 예제에서 정규식 (.*)(\d+)(.*)은 숫자가 포함된 임의의 텍스트와 매칭됩니다. 사용자가 입력한 문자열에 숫자가 포함되어 있으면 find() 메서드가 true를 반환하고, toMatchResult()로 얻은 MatchResult 객체의 group() 메서드를 호출하여 매칭된 전체 문자열을 출력합니다.
참고로 group() 외에도 group(int group) 메서드를 사용하면 특정 캡처 그룹에 해당하는 부분 문자열만 따로 추출할 수 있어, 더 세밀한 매칭 결과 처리가 가능합니다.