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

Unicode 카테고리 — \p{...}

~10 min · unicode, properties

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

주어진 Unicode 속성 가진 글자 매칭, 글자 listing 아님

\p{...} 가 주어진 Unicode 속성 가진 어떤 글자든 매칭. 보충은 \P{...}. 이게 모든 글자 listing 없이 portable Unicode-aware 패턴 풀어줌.

흔한 속성

  • \p{L} — 어떤 문자든 (어떤 스크립트든)
  • \p{Ll} — 소문자
  • \p{Lu} — 대문자
  • \p{N} — 어떤 숫자-like 든 (숫자, 분수, 로마 숫자 등)
  • \p{Nd} — 십진 숫자 (어떤 스크립트든의 숫자)
  • \p{P} — 구두점
  • \p{S} — 기호 (수학, 통화, 수정자)
  • \p{Z} — 분리자 (공백, 줄)
  • \p{Mn} — 비-spacing 마크 (combining 발음구별기호)

스크립트 속성

\p{Script=Hangul} 가 한글 음절 매칭. \p{Script=Han} 가 CJK ideograph. \p{Script=Latin} 가 라틴 스크립트. 쓰기 시스템으로 필터링 유용.

엔진 지원

  • Python regex third-party: 풀 지원.
  • Python re: \p{...} X, but \d, \w, \s 가 기본 Unicode-aware.
  • JavaScript: /u 플래그로 Yes.
  • PCRE, Java, .NET, Ruby: Yes.
  • Go RE2: Yes (RE2 문법 사용).

언제 사용

다국어 텍스트 처리할 때마다. [\p{L}\p{N}_] 가 portable Unicode-aware 식별자 패턴, 한국어 변수명, Cyrillic, Arabic, 어떤 거든 동작. [a-zA-Z0-9_] 가 ASCII 만.

Code

Unicode 속성 패턴·python
# Python — \p{...} 위해 third-party 'regex' 모듈 필요
import regex

# 어떤 스크립트든 모든 문자
regex.findall(r'\p{L}+', 'hello 안녕 123')
# ['hello', '안녕']

# 한글만
regex.findall(r'\p{Script=Hangul}+', 'hello 안녕 こんにちは')
# ['안녕']

# CJK ideograph
regex.findall(r'\p{Script=Han}+', '中文 한자 漢字')
# ['中文', '漢字']  — '한자' 가 한글 음성, Han 아님

# 식별자 패턴 (Unicode-aware)
regex.findall(r'[\p{L}\p{N}_]+', 'var_name = 변수명 + 한글_var')
# ['var_name', '변수명', '한글_var']

# Combining 마크 strip (예: 텍스트에서 발음구별기호 제거)
import unicodedata
clean = regex.sub(r'\p{Mn}', '',
                  unicodedata.normalize('NFD', 'café résumé'))
# 'cafe resume'

# JavaScript 등가 (/u 로)
// '안녕 hello'.match(/\p{Script=Hangul}+/gu)
// ['안녕']

External links

Exercise

어떤 다국어 텍스트든 (영어, 한국어, emoji 혼합). 패턴 셋: 스크립트 가로질러 모든 문자 추출 (\p{L}+), 비-라틴 숫자 포함 모든 숫자 추출 (\p{N}+), 모든 한글 추출 (\p{Script=Hangul}+). ASCII vs Unicode-aware 모드의 \w+ 가 잡는 거와 비교.

Progress

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

댓글 0

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

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