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 다루기를 심도 있게 다루겠습니다!
반응형