개발 지식/Java
[Java] 정규표현식 캡처 그룹과 비캡처 그룹
서하빈
2024. 1. 7. 11:32
정규표현식에서 그룹이란 ()로 감싸진 부분들을 의미한다.
캡처 그룹은 매칭 결과에서 해당 부분의 정보를 추출할 수 있는 그룹을 의미하고 비캡처 그룹은 해당 부분의 정보를 추출할 수 없는 그룹을 의미한다.
예시
String input = "A123 B456 C789";
Pattern pattern = Pattern.compile("([A-Z])(\\d+)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("전체 매칭: " + matcher.group(0)); // 전체 매칭
System.out.println("첫 번째 그룹: " + matcher.group(1)); // 첫 번째 그룹 (대문자)
System.out.println("두 번째 그룹: " + matcher.group(2)); // 두 번째 그룹 (숫자)
}
Pattern pattern = Pattern.compile("(?:[A-Z])(\\d+)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("전체 매칭: " + matcher.group(0)); // 전체 매칭
System.out.println("첫 번째 그룹: " + matcher.group(1)); // 두 번째 그룹 (숫자)
}
- 비캡처 그룹은 괄호안에 ?: 기호를 사용하여 나타낼 수 있고 위의 예시와 같이 matcher.group() 메서드로 해당 그룹의 정보를 추출할 수 없게 된다.