08.개발&프로그래밍/1.파이썬

5. Python 정규표현식 고급 활용 가이드

JWJ Family 2025. 7. 12. 16:33
728x90

그룹핑, Lookaround, 치환(sub), 분리(split) 등을 포함한 정규표현식 심화 예제 정리입니다.

1. 그룹(Grouping)과 findall()

import re

text = "John: 010-1111-2222; Jane: 010-3333-4444"
matches = re.findall(r"(\w+): (\d{3}-\d{4}-\d{4})", text)
print(matches)  # [('John','010-1111-2222'),('Jane','010-3333-4444')]

findall()은 그룹이 있으면 튜플 목록으로 반환합니다.

2. 전방탐색(POSITIVE Lookahead)

import re

s = "apple pie and banana split"
result = re.findall(r"\w+(?=\s+pie)", s)
print(result)  # ['apple']

(?=…)로 특정 패턴이 뒤따르는 문자열을 매칭만 하도록 합니다.

3. 부정적 전방탐색(NEGATIVE Lookahead)

import re

emails = ["user@mail.com","admin@mail.ru","test@mail.com"]
filtered = [e for e in emails if re.search(r".+@(?!.+\\.ru$).+", e)]
print(filtered)  # ['user@mail.com', 'test@mail.com']

(?!…)를 사용해 `.ru`로 끝나지 않는 이메일만 필터링합니다.

4. re.sub() – 치환 처리

import re

text = "I like yes and Yes."
print(re.sub(r"[yY]es", "no", text))
# → I like no and no.

re.sub()은 정규표현식으로 찾아 전체 문자열을 치환합니다.

5. re.split() – 패턴 기준 분리

import re

line = "a:1,b:2;c:3"
parts = re.split(r"[,;]", line)
print(parts)  # ['a:1', 'b:2', 'c:3']

re.split()은 정규 분리 기준을 다룰 때 유용하며, `.split()`보다 유연합니다.

요약 및 다음 글 예고

  • 그룹핑 + findall(): 구조화된 매칭 결과 획득
  • Lookahead/Lookbehind: 매칭 제어 패턴 고급 처리
  • sub(): 정규 표현식 기반 치환
  • split(): 유연한 분리 기준 설정

🎯 다음 글에서는 파일 처리: CSV 및 JSON 다루기를 심도 있게 다루겠습니다!

 

반응형