Quantifier 는 기본적으로 가능한 만큼 잡음
기본적으로 모든 quantifier 는 greedy. 가능한 만큼 글자 소비, 패턴 나머지가 매칭 실패할 때만 backtrack.
고전 예시: 패턴 a.*b 입력 a123b456b. 순진한 기대: a123b 매칭 (a 뒤 첫 b). 현실: a123b456b 매칭 (첫 a 부터 마지막 b 까지 전부).
왜 기본이 greedy
Backtracking. 엔진이 .* 를 문자열 나머지 전체에 매칭 시도, b 가 안 따라옴 (문자열 끝이니까), 그 다음 한 글자씩 backtrack 후 다시 시도. 리터럴 b 가 매칭하는 위치 찾을 때까지 backtrack 계속 — 그게 마지막 b 에서 일어남, 첫 게 아니라.
"greedy 는 가능한 가장 길게" 가 박이면 정규식의 놀람 절반이 놀람 안 됨.
Greedy 함정
입문 정규식 가장 흔한 실수: .* (greedy) 로 두 마커 사이 부분 문자열 추출 시도. 의도한 끝점 지나서 닫는 마커의 마지막 등장까지 먹어.