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

캡처 그룹 — 값 빼기

~8 min · capture, extraction

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

여는 괄호 순서대로 번호가 붙어

캡처 그룹은 여는 괄호가 나타나는 순서대로 왼쪽에서 오른쪽으로 번호가 붙어. 그룹 0은 언제나 전체 매칭이야.

(\d{4})-(\d{2})-(\d{2})2026-05-04를 매칭하면 그룹 1은 2026, 그룹 2는 05, 그룹 3은 04를 담아.

번호 그룹에 접근하기

  • Python은 m.group(1)m.groups()를 써.
  • JavaScript와 Go는 매칭 결과의 인덱스로 접근해.
  • ripgrep 치환에서는 $1, $2처럼 참조해.

findall의 반환형을 주의해

Python의 re.findall은 캡처 그룹이 없으면 전체 매칭, 하나면 그 그룹 값, 여러 개면 그룹 튜플을 반환해. 그룹 수에 따라 반환형이 달라지므로 일관된 매칭 객체가 필요할 때는 re.finditer를 써.

Code

캡처 그룹 작업·python
import re

# 날짜 파싱
pattern = r'(\d{4})-(\d{2})-(\d{2})'
m = re.match(pattern, '2026-05-04')
print(m.group())     # 전체 매칭
# '2026-05-04'
print(m.group(1))    # 연도
# '2026'
print(m.groups())    # 모든 그룹 튜플로
# ('2026', '05', '04')

# 그룹 있는 findall 동작
re.findall(r'(\d+)-(\d+)', '12-34 56-78')
# [('12', '34'), ('56', '78')]  — 매칭당 튜플

# finditer 가 더 예측 가능
for m in re.finditer(r'(\d+)-(\d+)', '12-34 56-78'):
    print(m.group(1), m.group(2))
# 12 34
# 56 78

External links

Exercise

ORDER #1138 — Pippa — $42.00 같은 줄에서 주문 ID, 고객 이름, 합계를 각각 캡처하는 패턴을 작성해. m.groups()가 세 값을 원하는 순서로 돌려주는지 확인해.

Progress

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

댓글 0

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

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