양쪽 assertion 으로 매칭 wrap
같은 위치에 lookbehind 와 lookahead 둘 다 stack 가능, 양쪽 다 소비 없이 주장. 외과적 추출에 유용.
예시: 고정 구분자 사이 값 추출
"[ 와 ] 사이 텍스트 가져오기, 안의 텍스트만 반환."
(?<=\[)[^\]]+(?=\])
(?<=\[)— 여는 대괄호 앞에 옴 주장[^\]]+— 실제 콘텐츠 매칭 (닫는 대괄호 빼고 어떤 거든)(?=\])— 닫는 대괄호 따라옴 주장
매칭이 안의 콘텐츠만. 대괄호는 감지되지만 제외.
캡처 그룹으로 같은 거, 덜 우아
Lookaround 없이: \[([^\]]+)\] — 대괄호 매칭, 안 캡처. 그 다음 m.group(1) 접근. 기능적으로 등가; 가독성 비용이 패턴과 코드 사이 이동.
Wrapped lookaround 선호 시기
다음일 때 wrapped lookaround:
findall이 튜플 unpack 없이 깨끗한 값 반환 원할 때.- 같은 패턴을 캡처 그룹 어색한 `sed` 또는 `ripgrep --replace` 에 재사용 원할 때.
- 패턴이 더 복잡한 정규식의 일부고 관리할 캡처 슬롯 하나 적게 원할 때.
캡처 그룹 선호 시기
다음일 때 캡처 그룹:
- 본인 엔진이 lookbehind 미지원 (Go, RE2).
- Lookbehind 가 variable-width 필요고 본인 엔진이 제약.
- 치환 위해 주변 텍스트 접근 원할 때 (예: sub 에서 대괄호로 wrap).