이전 거를 0번 이상 매칭
* 는 가장 너그러운 quantifier. "이전 요소, 0번 이상 반복" 의미. 결정적인 단어는 0번 — * 는 항상 매칭, 매칭 안 하는 것도 만족하니까.
패턴 colou*r 는 color, colour, colouur, colouuuuuuuur 까지 매칭. u 가 0번 이상 반복.
'이전 요소' 의미
* 는 바로 앞 조각에 적용:
- 단일 글자:
ab*는a,ab,abb,abbb... - Character class:
[0-9]*는 빈 문자열 또는 어떤 숫자 run. - Group:
(ab)*는 빈 문자열,ab,abab,ababab...
왼쪽 요소 — 그게 다. ab* 는 b 만 반복, ab 아님.
'항상 매칭' 의 놀람
* 가 0번도 매칭하니까 * 만 있는 anchor 없는 패턴은 항상 성공. re.match(r'\d*', 'hello') 는 매칭 반환 — 위치 0 의 빈 매칭. 기술적으론 맞지만 거의 안 유용. * 를 anchor 또는 최소 뭔가 매칭 강제하는 다른 요소와 결합.