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

Character Class [abc] — 집합에서 하나

~8 min · character-class, brackets

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

대괄호: 이 리스트에서 하나 골라

[abc]정확히 한 글자 매칭, a / b / c 중 하나. 부분 문자열 abc 전체 아냐 — 셋 중 하나인 글자 한 개.

이게 정규식의 일꾼. "모음": [aeiou]. "숫자 또는 문자": [a-zA-Z0-9]. "구분자": [ ,;\t]. character class 로 사고하기 시작하면 패턴 절반이 자연스럽게 나와.

클래스 안에선 특수 글자 대부분이 특수 아님

가장 유용한 정규식 사실 중 하나: 대부분 메타문자가 [...] 안에서 특수 의미 잃음. 클래스 안의 점 . 는 리터럴. +, ?, (, ), {, } 도 마찬가지. 클래스 안에선 escape 거의 필요 없어.

예외 — 클래스 안에서도 여전히 특수한 글자들:

  • ] — 클래스 닫음. escape (\]) 또는 첫 위치 ([]abc]).
  • \ — 여전히 escape 글자.
  • ^ — 첫 글자면 특수 (negation, 다음 강). 다른 위치는 리터럴.
  • - — 두 글자 사이는 특수 (range). 첫/끝 위치 또는 escape 면 리터럴.

순서 무관, 중복 무해

[cba][abc] 동일. [aabbcc][abc] 동일. 클래스는 집합 — 엔진이 내부적으로 중복 제거.

Code

Character class 기본·python
import re

# '모음'
re.findall(r'[aeiou]', 'hello world')
# ['e', 'o', 'o']

# Hex 자리 (한 글자)
re.findall(r'[0-9a-fA-F]', '#FF8FBE')
# ['F', 'F', '8', 'F', 'B', 'E']

# 클래스 안 점은 리터럴
re.findall(r'[.,;]', 'Hi, world; ok.')
# [',', ';', '.']

# 클래스에 ']' 포함하려면 escape 또는 첫 위치
re.findall(r'[][]', '[1] [2] [3]')  # '[' 또는 ']' 매칭
# ['[', ']', '[', ']', '[', ']']

External links

Exercise

전화번호가 가질 수 있는 어떤 단일 글자든 매칭하는 character class 한 개 작성: 숫자, 플러스, 하이픈, 괄호, 공백. alternation 없이. +1 (415) 555-0199 에 대해 테스트해서 모든 글자가 한 번에 하나씩 매칭됨 확인.

Progress

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

댓글 0

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

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