대안 가로질러 캡처 번호 평탄화
보통 그룹 안 alternation 이 안 그룹 가지면 각 대안에 자기 그룹 번호 줘. (a(b)c|d(e)f) 가 그룹 1 (전체), 2 (b), 3 (e). 'b' 와 'e' 가 대안인데 별개 번호.
Branch reset 그룹 (?|...) 가 각 대안 위해 번호 reset. (?|a(b)c|d(e)f) — 그룹 1 이 'b' OR 'e', 어느 거든 매칭한 거. "매칭한 분기의 안 부분" 원하면 더 깨끗.
사용 케이스
N 대안 패턴 가지고 각각의 의미 있는 부분에 단일 캡처 슬롯 원할 때. Branch reset 없으면 N 캡처 슬롯, 한 개만 채워짐, non-None 인 거 찾으려 walk.
엔진 지원
PCRE 와 Perl. Python third-party regex 모듈. 내장 re, JavaScript, .NET, Go 에 X.
Portable workaround
Branch reset 없으면 다른 대안에 같은 이름의 named 그룹 사용. PCRE 가 허용; Python regex 모듈도. 내장 re 가 중복 이름 거부. 이거 필요하고 내장 re 에 갇혔으면 post-process: 첫 non-None 그룹 선택.