?는 바로 앞 요소를 선택 사항으로 만들어
?를 붙인 요소는 0번 또는 1번만 나타날 수 있어. colou?r에서는 u만 선택 사항이므로 color와 colour는 매칭하지만 colur는 매칭하지 않아.
한 글자나 한 묶음이 있어도 되고 없어도 되는 입력에서 이 문법이 자주 쓰여.
선택 사항을 패턴으로 옮겨 봐
https?://example.com은s가 선택 사항이라 HTTP와 HTTPS 주소 모양을 모두 받아들여.-?\d+는 마이너스 부호가 있거나 없는 정수를 찾아.(\+1)? \d{3}-\d{4}에서는 국가 코드 묶음 전체가 선택 사항이야.analy[sz]e,colou?r,cent(er|re)처럼 철자 차이도 표현할 수 있어.
다른 수량자 뒤의 ?는 뜻이 달라
*?, +?, ??, {n,m}?에서는 ?가 앞 요소를 선택 사항으로 만드는 게 아니라 수량자를 게으르게 바꿔. x?와 x*?는 생김새가 비슷해도 전자는 x를 0번이나 1번, 후자는 x를 가능한 적게 반복한다는 차이가 있어.