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

Shorthand 클래스 — \d \w \s

~8 min · shorthand, digit, word, whitespace

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

타이핑 줄여주는 세 글자

가장 흔한 character class 는 shorthand 형태가 있어. 보이는 그대로의 의미:

  • \d — 숫자. ASCII: [0-9]. Unicode 모드: 모든 Unicode 숫자.
  • \w — "word" 글자. ASCII: [A-Za-z0-9_]. Unicode 모드: 문자 + 숫자 + 연결자.
  • \s — 공백 글자. [ \t\n\r\f\v], Unicode 모드면 Unicode 공백 추가.

이건 universal — 모든 정규식 flavor 가 지원.

Unicode-aware vs ASCII-only

여기서 flavor 가 미묘하게 갈려:

  • Python 3: \d, \w, \s 기본 Unicode-aware. \d 는 아랍-인도 숫자, Devanagari 숫자 등 매칭. ASCII 강제하려면 re.ASCII 플래그.
  • JavaScript: 기본 ASCII-only. u 플래그로 Unicode 활성화하지만 \w 가 Unicode 문자 포함되진 않음. 그건 u 플래그 + \p{L} 사용.
  • RE2 / Go / ripgrep: 기본 ASCII. Unicode 카테고리는 \p{Nd}, \pL 등.
  • PCRE: 기본 ASCII; (*UCP) 또는 /u 모드로 Unicode-aware.

\w 함정

\w 는 underscore 포함하지만 하이픈 안 함. 그래서 \w+my_var 매칭하지만 my-var 안 함. 사람들이 끊임없이 까먹어. "하이픈 있는 식별자" 원하면 [\w-]+ 명시.

Code

Shorthand 클래스·python
import re

# 텍스트 안 숫자
re.findall(r'\d+', 'on 2026-05-04 at 14:32')
# ['2026', '05', '04', '14', '32']

# Word 같은 토큰
re.findall(r'\w+', 'hello_world! foo-bar 123')
# ['hello_world', 'foo', 'bar', '123']  — 주의: '-' 가 'foo-bar' 분리

# 공백
re.findall(r'\s+', 'a\tb  c\nd')
# ['\t', '  ', '\n']

# Python 3 기본 Unicode-aware: 비-ASCII 숫자 매칭
re.findall(r'\d+', '٢٠٢٦ 2026')
# ['٢٠٢٦', '2026']

# ASCII-only 강제
re.findall(r'\d+', '٢٠٢٦ 2026', re.ASCII)
# ['2026']

External links

Exercise

패턴 셋 작성: (1) 멀티라인 로그에서 숫자 다 추출, (2) word 같은 토큰 다 추출, (3) 어떤 공백 run 이든 split. 각각에 대해 Unicode-aware 또는 ASCII-only 결정 후 옳은 플래그 추가.

Progress

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

댓글 0

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

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