캡처 슬롯 할당 없이 그룹화
(?:...) 는 그룹화 목적엔 (...) 처럼 동작 — quantifier 와 alternation 똑같이 동작 — 하지만 매칭된 텍스트를 번호 그룹에 캡처하지 않음. 매칭은 존재; 그냥 슬롯이 없음.
왜 굳이
값 필요 없을 때 non-capturing 선호 이유 셋:
- 명확성. 읽는 사람이
(?:...)보고 즉시 "이건 그룹화, 추출 아님" 알아. 캡처 그룹은 "이거 뭐야?" 질문 부름. - 그룹 번호 안정성. Non-capturing 그룹 추가/제거해도 다른 캡처 그룹 번호 안 바뀜. 순수
(...)면 패턴 모든 변경이 모든 다운스트림 참조 번호 바꿀 수 있음. - 약간 성능. 캡처 슬롯 할당 없음. 작은 이득, 무료.
'혹시 모르니 다 캡처' 안티 패턴
입문자는 모든 그룹 반사적으로 캡처, 그 다음 캡처 대부분 안 씀. 결과: 노이즈 코드, fragile 그룹 번호, 약간 느린 매칭. 실제 쓸 거만 캡처; 나머지는 non-capture.