글자 소비 안 하는 assertion
이미 zero-width assertion 하나 만남: \b, word boundary. "word 와 비-word 사이 경계에 있나?" 체크, 글자 소비 없이. 이게 "zero-width" 의미 — assertion 이 *위치* 의 속성 체크, *글자* 가 아님.
Lookaround 가 이 아이디어의 일반 형태. (?=...) 는 "이 위치에서 따라오는 텍스트가 ... 매칭 — 근데 커서 이동 X" 의미. 엔진이 앞을 엿보고, 매칭 확인, 그 다음 엿보기 *전* 위치에서 계속.
왜 중요
Lookaround 없으면 매칭에 실제 안 원하는 컨텍스트 캡처+소비 해야 해. Lookaround 가 "이 글자 중요해, 근데 주변 때문에만" 표현 가능.
구체: "숫자 + 'kg' 따라오는 거 찾되 숫자만 반환." Lookaround 없이는 'kg' 매칭하고 코드로 떼야. Lookahead 로: \d+(?=kg) 가 숫자 매칭 + 'kg' 따라옴 주장, 매칭은 숫자만.
네 가지 flavor
Lookaround 는 네 변형 — 두 방향 × 두 polarity:
(?=...)— positive lookahead: "... 가 여기 따라옴"(?!...)— negative lookahead: "... 가 여기 NOT 따라옴"(?<=...)— positive lookbehind: "... 가 여기 앞에 옴"(?<!...)— negative lookbehind: "... 가 여기 앞에 NOT 옴"
각각 다음 강에서.