Python 24일 완성Day 16pythonintermediate
Python 24일 코스 - Day 16: 정규표현식
· 읽기 2분
Day 16: 정규표현식
기본 사용법
import re
text = "전화번호: 010-1234-5678, 이메일: user@example.com"
# 패턴 검색
phone = re.search(r"\d{3}-\d{4}-\d{4}", text)
if phone:
print(phone.group()) # 010-1234-5678
주요 패턴 문법
| 패턴 | 설명 | 예시 |
|---|
\d | 숫자 | \d+ -> “123” |
\w | 문자/숫자/언더스코어 | \w+ -> “hello_1” |
\s | 공백 | \s+ -> ” “ |
. | 아무 문자 | a.c -> “abc” |
* | 0회 이상 | ab*c -> “ac”, “abc” |
+ | 1회 이상 | ab+c -> “abc” |
? | 0 또는 1회 | colou?r -> “color” |
{n,m} | n~m회 반복 | \d{2,4} -> “12”, “1234” |
[] | 문자 클래스 | [aeiou] -> 모음 |
^ / $ | 시작 / 끝 | ^Hello |
() | 그룹 캡처 | (\d+)-(\d+) |
주요 함수
text = "사과 3개, 바나나 5개, 체리 12개"
# findall: 모든 매칭 찾기
numbers = re.findall(r"\d+", text)
print(numbers) # ['3', '5', '12']
# sub: 치환
cleaned = re.sub(r"\d+", "N", text)
print(cleaned) # 사과 N개, 바나나 N개, 체리 N개
# split: 분할
parts = re.split(r",\s*", text)
print(parts) # ['사과 3개', '바나나 5개', '체리 12개']
그룹 캡처
pattern = r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})"
match = re.search(pattern, "오늘은 2026-04-20입니다")
if match:
print(match.group("year")) # 2026
print(match.group("month")) # 04
print(match.group("day")) # 20
이메일 검증 예제
def is_valid_email(email):
pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
return bool(re.match(pattern, email))
print(is_valid_email("user@example.com")) # True
print(is_valid_email("invalid-email")) # False
오늘의 연습문제
- 텍스트에서 모든 URL을 추출하는 정규표현식을 작성하세요.
- 비밀번호 강도를 검증하세요 (대/소문자, 숫자, 특수문자 포함 8자 이상).
- HTML 태그를 제거하는 함수를 정규표현식으로 만드세요.