C.W.K.
Stream
Lesson 02 of 12 · published

1번 이상: +

~6 min · quantifier, plus

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

'최소 하나' quantifier

+* 의 더 엄격한 형제. 같은 아이디어 — 이전 요소 반복 — 인데 최소가 1, 0 아냐. \d+ 는 "숫자 하나 이상" 매칭. \d* 는 "숫자 0개 이상." 그 한 차이가 입력 검증할 때 모든 걸 바꿔.

패턴 a+a, aa, aaa... 매칭하지만 빈 문자열은 안 함. 패턴 \s+ 는 공백 하나 이상; 공백 없으면 매칭 없음.

'진짜 값 들어와야 함' 의 기본

"여기 콘텐츠 있어야 함" 의미일 땐 * 대신 + 손 뻗기. * 의 가장 흔한 production 버그가 빈 입력 받아들이는 거. + 가 무료로 막아.

* 와 같은 문법 룰

+* 처럼 바로 앞 요소에 바인딩. ab+b 만 반복. (ab)+ 는 그룹 전체 반복.

Code

+ vs *·python
import re

# + 는 최소 하나 필요
re.findall(r'a+', 'b aa aaa baaab')
# ['aa', 'aaa', 'aaa']

# 빈 입력 — + 실패, * 성공
bool(re.fullmatch(r'a+', ''))   # False
bool(re.fullmatch(r'a*', ''))   # True (많은 버그의 원천)

# 흔한 패턴: '비어있지 않은 단어'
re.findall(r'\w+', 'hello   world  ')
# ['hello', 'world']  — 빈 run 은 카운트 안 함

# Group + 가 그룹 반복
re.findall(r'(ha)+', 'haha hahaha ohai')
# ['ha', 'ha']

External links

Exercise

본인이 가진 폼 필드 검증 정규식 잡아. 모든 * audit: 작성자가 "0번도 OK" 의도였나, "최소 하나" 였나? 잘못된 거 + 로 교체.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.