수량자는 기본적으로 가능한 만큼 잡아
수량자는 별도 표시가 없으면 탐욕적으로 동작해. 먼저 가능한 만큼 문자를 소비하고, 뒤에 남은 패턴이 실패할 때만 조금씩 되돌려 줘.
a.*b를 a123b456b에 적용해 보자. 첫 번째 b에서 멈출 것 같지만 실제로는 첫 a부터 마지막 b까지인 a123b456b를 매칭해.
왜 마지막 b까지 갈까
엔진은 .*로 문자열 끝까지 소비한 다음 리터럴 b를 맞추려 해. 끝에서는 실패하므로 한 글자씩 되돌아가며 다시 시도하고, 가장 먼저 성공하는 마지막 b에서 멈춰. 이 순서를 기억하면 탐욕적 수량자의 결과를 훨씬 쉽게 예측할 수 있어.
두 마커 사이를 찾을 때 생기는 함정
.*로 시작 마커와 끝 마커 사이를 추출하면 의도한 첫 끝점을 지나 마지막 끝점까지 먹기 쉬워. 다음 강의 게으른 수량자나, 경계를 직접 적는 부정형 문자 클래스로 범위를 분명히 만들어.