본문 바로가기
C.W.K.
Stream
Lesson 07 of 12 · published

부정형 축약 문자 클래스 — \D \W \S

~5 min · shorthand, negation

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

대문자는 의미를 뒤집어

축약 문자 클래스에는 각각 대문자 반대형이 있어.

  • \D — 숫자가 아닌 글자야. [^\d]와 같아.
  • \W — 단어 문자가 아닌 글자야. [^\w]와 같아.
  • \S — 공백이 아닌 글자야. [^\s]와 같아.

규칙은 단순해. 소문자는 집합을 고르고 대문자는 그 보충집합을 골라.

실전에서 쓰기

\D+는 숫자 사이의 구분자로 나누기 좋아. re.split(r'\D+', '2026-05-04')를 실행하면 숫자가 아닌 하이픈이 구분자로 소비되고 ['2026', '05', '04']가 나와.

\S+는 공백 없이 이어진 문자열을 잡아. 토큰, URL, 파일 경로를 찾을 때 깔끔해.

\W는 단어 문자가 아닌 실제 글자를 찾아야 할 때 써. 위치만 확인하는 \b와는 역할이 달라.

Unicode 규칙도 함께 뒤집혀

소문자 형태의 범위를 정하는 엔진 방언과 플래그가 대문자 형태에도 그대로 적용돼. Python 3 기본 모드의 \D는 ASCII 0-9뿐 아니라 모든 Unicode 숫자를 제외해.

Code

부정형 축약형 패턴·python
import re

# 숫자가 아닌 조각으로 나눠 날짜에서 숫자 추출
re.split(r'\D+', '2026-05-04')
# ['2026', '05', '04']

# 공백이 아닌 토큰
re.findall(r'\S+', 'hello world  \tfoo\nbar')
# ['hello', 'world', 'foo', 'bar']

# 단어 문자가 아닌 글자(구두점, 기호) 찾기
re.findall(r'\W', 'hello, world! 안녕?')
# [',', ' ', '!', ' ', '?'] — Unicode 모드에 따라 달라짐

External links

Exercise

지저분한 문자열 ' apple , banana | cherry '을 정규식 하나로 분할해서 깨끗한 목록 ['apple', 'banana', 'cherry']을 만들어 봐. \W+로 나눈 뒤 빈 항목을 리스트 컴프리헨션으로 걸러내거나, 결과 양끝만 정리해야 한다면 strip()을 사용해.

Progress

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

댓글 0

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

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