case 1 :
r뒤에 어떤 문자가 오는데, 그 수량은
없을수도 있고 무수히 많을수도 있다.
case 2 :
수량자 뒤에 물음표 (?)가 오게 되면
그 수량자의 의미가 맥락상 달라지게 된다.
원래의 ?의 의미는 0~1이다
*의 의미는 0~1~무한대이다.
그래서 *뒤에 물음표가 뒤에 붙게되면
*에서 가장 적은 수량에 해당하는 0의 의미를 갖게 된다.
즉, *의 의미가 ?로 인해서 0이 된다.
그렇기 때문에 r뒤에 있는 .(애니케릭터)은 사용되지 않게 된다.
그 결과
r뒤에 .이 있음에도 불구하고 r만 선택이 된것을 볼 수가 있다.
case 3 :
r.+ 라고 하면
r뒤에 어떤 문자가 오는데, 그 문자의 수량은 반드시 하나 이상이여야 된다는 뜻이다.
case 4 :
그런데 그 뒤에 물음표가 나왔다.
즉, 더하기라는 수량자 뒤에 물음표가 나오면
r뒤에 문자 하나만을 선택하는 패턴이 된다.
+는 1~무한대 인데
이것이 ?에 의해서 무한대의 의미는 없어지고
1에 의미를 갖는다.
case 5 :
r 뒤에 어떠한 문자가 없을수도 있고 하나일수도 있다는 뜻에서
2개씩 선택이 된것이다.
물음표가 갖고 있는 0~1이라는 의미에서
뒤에 물음표가 붙게 되면 앞쪽에 있는
더 작은 선택 수량이 선택되면서
그 앞에 있는 . 은 0개를 의미하고
그 이야기는 r만을 선택한다는 뜻이다.
그러면 여기서 궁금한것은 ?는 언재 쓰는걸까.
이렇게 따로따로 선택하고 싶을 때
만약에
.기호를 쓰게 되면
div태그와 닫히는 div태그 사이에있는
어떠한 문자를 선택하는것인데.
이 문자는 .+이기 때문에 어떠한 택스트가
최소한 하나 이상인 문자를 선택한다는 것이다.
이렇게해서 선택을 했는데 결과는 어떻게 됐는가
보이는것처럼
이만큼이 끊겨서 선택되는것이 아니고
이렇게 통으로 선택이 된것이다.
</div>가
중간에 있는 이것을 지목한것이 아니라
이 문장의 맨 끝에 있는 </div>를 선택했기 때문에
모두가 선택이 된것이다.
이러한 방식을 탐욕적인 수량자라고 한다.
Greedy이라고 한다.
이렇게 +뒤에 ?를 넣어주면
2블럭 단위로 선택이 된다.
이러한 방식을 게으른 선택자라고한다.
영어로는 lazy 컨티파이어(귀찮해서 안쓴다)