*, +, {n,m} 그리고 ? 를 붙였을 때의 차이를 이해합니다.
수량자는 앞 요소가 몇 번 반복될지 지정합니다. *는 0회 이상, +는 1회 이상, ?는 0회 또는 1회입니다. 정확한 횟수는 {n}, 범위는 {n,m} 으로 씁니다. 예를 들어 \d{3} 은 숫자 정확히 세 개입니다.
기본적으로 수량자는 탐욕적(greedy)입니다. 즉 가능한 한 많이 먹으려 합니다. <.*> 를 <a>b<c> 에 적용하면 첫 < 부터 마지막 > 까지 통째로 잡힙니다.
수량자 뒤에 ? 를 붙이면 게으른(lazy) 매칭이 됩니다. <.*?> 는 가능한 한 적게 먹어 <a> 만 잡습니다. 태그나 따옴표 사이 내용을 하나씩 뽑을 때 이 차이가 결정적입니다.
탐욕/게으름 때문에 패턴이 예상과 다르게 동작하는 경우가 많습니다. 결과가 너무 넓게 잡히면 게으른 수량자나 부정 문자클래스([^>] 등)를 떠올려 보세요.