괄호가 패턴 조각의 scope
이전 트랙에서 괄호 scope 일 하는 거 봤어. (ab)+ 는 'ab' 세 번 반복; (abc|def) 는 'abc' 또는 'def' 매칭. 괄호는 매칭되는 거 안 바꿔 — 엔진에 "이거 한 덩어리야" 알려줄 뿐.
한 문법에 네 가지 일
괄호는 같은 문법에 네 가지 다른 일 패킹:
- Quantifier 또는 alternation scope —
(ab)+,(abc|def) - 값 캡처 —
(\d{4})-(\d{2})가 연도와 월을 group 1, 2 로 캡처 - Lookaround / atomic / 등 적용 —
(?=...),(?:...),(?>...)같은 특수 그룹 문법 - Backreference 타겟 제공 —
(\w+) \1가 "단어, 그 다음 같은 단어" 매칭
이래서 괄호가 일꾼 — "여기 캡처 그룹 필요한가, 아니면 그룹화만?" 이 가장 흔한 결정 중 하나.
기본은 캡처
그냥 (...) 는 캡처 그룹. 매칭된 부분 문자열에 나중 참조 가능한 슬롯 할당 (group 1, group 2 등). Scoping 만 필요 (backreference, 추출 없음) 면 4강에서 다루는 명시 non-capturing (?:...) 사용.