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

괄호로 그룹화

~6 min · groups, parentheses, scope

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

괄호가 패턴 조각의 scope

이전 트랙에서 괄호 scope 일 하는 거 봤어. (ab)+ 는 'ab' 세 번 반복; (abc|def) 는 'abc' 또는 'def' 매칭. 괄호는 매칭되는 거 안 바꿔 — 엔진에 "이거 한 덩어리야" 알려줄 뿐.

한 문법에 네 가지 일

괄호는 같은 문법에 네 가지 다른 일 패킹:

  1. Quantifier 또는 alternation scope(ab)+, (abc|def)
  2. 값 캡처(\d{4})-(\d{2}) 가 연도와 월을 group 1, 2 로 캡처
  3. Lookaround / atomic / 등 적용(?=...), (?:...), (?>...) 같은 특수 그룹 문법
  4. Backreference 타겟 제공(\w+) \1 가 "단어, 그 다음 같은 단어" 매칭

이래서 괄호가 일꾼 — "여기 캡처 그룹 필요한가, 아니면 그룹화만?" 이 가장 흔한 결정 중 하나.

기본은 캡처

그냥 (...) 는 캡처 그룹. 매칭된 부분 문자열에 나중 참조 가능한 슬롯 할당 (group 1, group 2 등). Scoping 만 필요 (backreference, 추출 없음) 면 4강에서 다루는 명시 non-capturing (?:...) 사용.

Code

다른 일 하는 괄호·python
import re

# Quantifier scope — 'ab' 세 번 이상 반복
re.findall(r'(ab){3,}', 'ababab abababab abc')
# ['ab', 'ab']  — 그룹의 마지막 반복 캡처

# Alternation scope — 'cat' 또는 'dog' 매칭
re.findall(r'(cat|dog)s?', 'cats and dogs and cat-dog')
# ['cat', 'dog', 'cat', 'dog']

# 값 캡처
m = re.match(r'(\d{4})-(\d{2})', '2026-05-04')
m.group(1), m.group(2)
# ('2026', '05')

# Backreference 타겟
bool(re.search(r'(\w+) \1', 'the the cat sat'))
# True  — 'the' 뒤에 'the'

External links

Exercise

괄호 셋 있는 패턴 잡아. 각각 결정: 캡처 (값 사용) 인가, scope-only (quantifier/alternation 위해 있을 뿐) 인가? Scope-only 를 (?:...) 로 변환. 패턴이 동일하게 동작하고 더 명확히 읽혀야.

Progress

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

댓글 0

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

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