괄호로 여러 요소를 한 묶음으로 만들어
(ab)+에서는 ab 전체가 반복되고, (abc|def)에서는 두 문자열 가운데 하나를 골라. 괄호 자체가 입력 문자를 소비하지는 않지만 수량자와 선택이 적용되는 범위를 바꿔 줘.
괄호는 네 가지 일을 맡아
- 적용 범위를 묶어.
(ab)+와(abc|def)처럼 여러 요소를 한 단위로 다뤄. - 매칭한 값을 캡처해.
(\d{4})-(\d{2})는 연도와 월을 각각 그룹 1과 그룹 2에 담아. - 특수 그룹 문법의 틀을 제공해.
(?=...),(?:...),(?>...)도 모두 괄호로 시작하지. - 역참조할 값을 남겨.
(\w+) \1은 한 단어 뒤에 같은 단어가 다시 오는 모양을 찾아.
패턴에 괄호를 넣을 때마다 값이 필요한지, 아니면 범위만 묶으면 되는지 먼저 물어봐. 이 선택이 캡처 그룹과 비캡처 그룹을 가르는 기준이야.
평범한 괄호는 캡처 그룹이야
(...)로 매칭한 부분 문자열은 그룹 1, 그룹 2처럼 번호가 붙은 자리에 저장돼. 나중에 추출하거나 역참조할 값이라면 유용하지만, 범위만 묶는다면 4강에서 배울 (?:...)가 의도를 더 분명하게 보여 줘.