0Pricing
Learn AI with Python · 강의

캡처 그룹과 이름 있는 그룹

캡처를 위한 괄호, (?P ...) 이름 있는 그룹, re.fullmatch(), 전방 탐색과 후방 탐색을 다룹니다.

캡처 그룹과 이름 있는 그룹은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

그룹이 필요한 이유

그룹을 사용하면 일치 항목의 일부를 분리할 수 있으므로 원하는 부분만 정확히 추출할 수 있습니다. 예를 들어 전화번호에서 지역 번호를, 날짜에서 연도를, 이메일에서 사용자 이름을 추출할 수 있습니다.

이 단원에서는 캡처 그룹, 이름 있는 그룹, 비캡처 그룹, 룩어라운드를 다룹니다.

( )로 캡처 그룹 만들기

패턴의 일부를 괄호로 감싸면 해당 부분을 캡처할 수 있습니다. 전체 일치 항목과 각 그룹은 일치 객체에서 사용할 수 있게 됩니다.

import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group())    # "2026-05-29" (whole match)
print(m.group(1))   # "2026"
print(m.group(2))   # "05"

match.group, groups, groupdict

유용한 접근자는 다음과 같습니다.

  • m.group(0) — 전체 일치 항목
  • m.group(n) — n번째 캡처
  • m.groups() — 모든 캡처의 튜플
import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups())   # ("2026", "05", "29")
year, month, day = m.groups()

(?P<name>...)으로 이름 있는 그룹 만들기

그룹 번호를 사용하면 코드가 쉽게 취약해집니다. 이름 있는 그룹은 (?P<name>...)을 사용하므로 의미 있는 이름으로 캡처를 참조할 수 있습니다.

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year"))   # "2026"
print(m.group("month"))  # "05"

구조화된 출력을 위한 groupdict

m.groupdict()는 모든 이름 있는 그룹을 딕셔너리로 반환하므로, 일치한 텍스트를 구조화된 레코드로 변환하기에 적합합니다.

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}

비캡처 그룹 (?:...)

때로는 그룹화만을 위해 괄호가 필요할 수 있습니다(예: 수량자를 적용할 때). 하지만 캡처를 만들고 싶지 않은(NOT) 경우에는 (?:...)을 사용하십시오.

이렇게 하면 그룹 번호를 깔끔하게 유지할 수 있습니다.

import re

# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1))   # "42" -> group 1 is the digits, not "ab"

역참조

역참조 \1은 앞에서 그룹이 캡처한 것과 동일한 텍스트와 일치합니다. 반복되는 단어를 찾을 때 유용합니다.

import re

# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]

전방 탐색 (?=...)

양의 전방 탐색 (?=...)은 뒤에 와야 하는 내용을 확인하지만, 해당 내용을 소비하지는 않습니다. 확인된 텍스트는 일치 결과에 포함되지 않습니다.

여기서는 뒤에 "px"가 오는 경우에만 숫자를 일치시킵니다.

import re

print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"]  -> "20" skipped (not followed by px)

음의 전방 탐색 (?!...)

음의 전방 탐색 (?!...)은 뒤에 와서는 안 되는 내용을 확인합니다. 뒤에 "px"가 오지 않는 경우에만 숫자를 일치시킵니다.

import re

print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by px

후방 탐색 (?<=...) 및 (?<!...)

후방 탐색은 일치하는 텍스트를 소비하지 않고 그 앞에 오는 내용을 확인합니다.

  • (?<=...) 양의 후방 탐색 — 앞에 와야 함
  • (?<!...) 음의 후방 탐색 — 앞에 와서는 안 됨

여기서는 달러 기호가 앞에 오는 금액을 기호는 캡처하지 않고 가져옵니다.

import re

print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"]  -> only the amount after $

그룹과 전후방 탐색 결합

실제 추출기는 이러한 도구를 함께 사용합니다. 이 패턴은 통화 기호가 앞에 있고 소수 부분이 뒤에 오는 이름이 지정된 가격을 추출합니다.

import re

text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents"))   # 1299 99

빠른 확인: 이름 있는 그룹

숫자 대신 "연도"와 같이 읽기 쉬운 이름으로 일치 결과를 추출하려고 합니다.

복습: 그룹과 전후방 탐색

이제 텍스트에서 정확한 구조를 추출할 수 있습니다.

  • ( ) 캡처 그룹: m.group(n) 및 m.groups() 사용
  • (?P<name>...) 이름 있는 그룹: m.groupdict() 사용
  • (?:...) 비캡처 그룹: 깔끔한 그룹화에 사용
  • 반복을 위한 역참조 \1
  • 전방 탐색 (?=)/(?!) 및 후방 탐색 (?<=)/(?<!)

다음 단계에서는 이 모든 기능을 결합해 AI용 텍스트를 정제합니다.

자주 묻는 질문

“캡처 그룹과 이름 있는 그룹” 강의는 무료인가요?

네 — “캡처 그룹과 이름 있는 그룹” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“캡처 그룹과 이름 있는 그룹”에서 뭘 배우나요?

캡처를 위한 괄호, (?P ...) 이름 있는 그룹, re.fullmatch(), 전방 탐색과 후방 탐색을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“캡처 그룹과 이름 있는 그룹” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 정규 표현식 패턴과 문자 클래스
  2. re 모듈: 검색, 일치, 모두 찾기, 치환
  3. 캡처 그룹과 이름 있는 그룹
  4. 정규 표현식을 활용한 인공지능용 텍스트 정제
← Learn AI with Python(으)로 돌아가기