커서가 그 자리에 머묾
Lookaround 의 가장 중요한 속성 한 가지: assertion 실행 후 엔진이 전 같은 위치. 글자 소비 없음.
실전 결과 두 개:
1. 한 위치의 여러 lookaround 가 자연스럽게 chain. 각각 같은 자리에서 엿봄. (?=A)(?=B)(?=C) 는 "여기서 시작 A AND B AND C 다 매칭" 의미.
2. Lookaround 안의 텍스트가 후속 매칭과 OVERLAP 가능. (?=cat)\w+ 가 먼저 'cat' 여기 시작 주장, 그 다음 \w+ 가 실제로 'cat' 소비 (그리고 더). 같은 글자, 두 역할.
소비 대안과 비교
패턴 cat\d+ 가 'cat' 소비 후 숫자 매칭. 후 커서가 숫자 너머.
패턴 (?=cat)\d+ 는 절대 매칭 안 됨 — 'cat' 여기 주장, 그 다음 같은 위치에서 숫자 매칭 시도, 근데 위치가 'c', 숫자 아님.
패턴 (?=cat\d)cat\d+ 동작 — 'cat' 다음 숫자 따라옴 주장, 그 다음 실제로 cat 과 숫자 매칭.
왜 split 에 중요
Zero-width 매칭이 re.split(r'(?=[A-Z])', 'CamelCase') 가 모든 대문자에서 split 하면서 대문자 *삭제* 안 하게 함. Boundary 글자 소비 없이 split 위치 감지.