나머지 패턴이 한 위치에서만 맞으면 결과도 같아
\d+abc와 \d+?abc를 1234abc에 적용하면 둘 다 같은 문자열을 찾을 수 있어. 뒤의 abc가 들어갈 자리가 하나뿐이라 소비량을 달리 시도해도 최종 경계는 같기 때문이야.
차이는 닫는 표식이나 다음 요소가 여러 위치에 나타날 때 드러나. 탐욕적 수량자는 먼저 많이 잡고 뒤로 물러나며, 게으른 수량자는 먼저 적게 잡고 앞으로 늘려 가.
입력 모양에 맞춰 선택해
표식 사이를 추출한다면 첫 닫는 표식에서 멈추는 게으른 수량자나 그 표식을 제외하는 문자 클래스를 먼저 살펴봐.
전화번호나 날짜처럼 모양이 고정돼 있다면 탐욕적 수량자로도 경계가 흔들리지 않는 경우가 많아. 실제 정상 입력과 오류 입력을 함께 대입해서 확인해.
긴 텍스트에서 일부를 검색한다면 어느 경계를 원하느냐를 먼저 정해야 해. 탐욕적이라는 이유만으로 값이 더 정확해지는 것도, 게으르다는 이유만으로 더 안전해지는 것도 아니야.
모르겠다면 기본 동작에서 시작해
우선 탐욕적 수량자로 패턴을 만들고 대표 입력에서 잡히는 범위를 확인해. 너무 멀리 잡으면 게으른 수량자나 부정형 문자 클래스로 바꾸고, 바뀐 경계가 요구사항과 맞는지 다시 시험해.