매칭을 위치에 박기
앵커는 zero-width — 글자 소비 안 하고, 특정 위치에 있다고 주장만 함.
^— 문자열 시작 (또는 MULTILINE 플래그면 줄 시작)$— 문자열 끝 (MULTILINE 이면 줄 끝)
앵커 없으면 패턴이 어디든 매칭. ^pattern$ 으로 "입력 전체가 정확히 이 패턴" 이라 말함.
MULTILINE 플래그
기본적으로 ^ 와 $ 는 전체 문자열 시작/끝 매칭. re.MULTILINE (Python) 또는 m 플래그 (PCRE/JS) 면 모든 줄 시작/끝에서도 매칭. 멀티라인 입력 처리 (로그 파일, 멀티라인 사용자 입력 등) 에 중요.
Fullmatch 대안
Python 에서 re.fullmatch(pat, text) 는 re.match(r"^" + pat + r"$", text) 의 shorthand. 전체 문자열이 패턴 매칭하는지 검증할 때 사용. 앵커 wrap 보다 명확하고 망치기 어려움.
\A 와 \Z 앵커
일부 flavor (Python, PCRE, .NET) 가 \A 와 \Z 를 절대 문자열 시작/끝으로 제공. MULTILINE 무시. 그래서 \A 는 항상 "입력 시작," 절대 "줄 시작" 아님. 플래그로 안 변하는 앵커링 원할 때 유용.