파이썬 re.match() 완전 정복
파이썬에서 문자열을 분석하거나 필터링할 때 정규표현식(Regex)은 매우 유용한 도구입니다.
그중에서도 re.match()는 문자열이 특정 형식으로 시작하는지 검사할 때 사용하는 함수입니다.
이 글에서는 re.match()의 기본 개념부터 다양한 정규표현식 구성 요소, 실전 예제까지 하나하나 쉽게 설명해드리겠습니다.
✅ re.match()란?
re.match(pattern, string) 형태로 사용하며,
문자열의 시작부터 pattern이 일치하는지 확인합니다.
- 일치하면 Match 객체를 반환
- 일치하지 않으면 None을 반환
import re
m = re.match(r'abc', 'abcdef')
if m:
print(m.group()) # 출력: 'abc'
→ 문자열이 'abc'로 시작하므로 매칭됩니다.
✅ 정규표현식 기본 구성요소
정규표현식은 문자 조합을 이용해 특정 패턴을 찾기 위한 표현 방식입니다.
아래는 자주 쓰이는 정규표현식 요소입니다.
패턴 | 의미 | 예시 |
. | 아무 문자 하나 | a.c → abc, axc |
^ | 문자열 시작 | ^abc → abcdef |
$ | 문자열 끝 | xyz$ → 123xyz |
* | 0회 이상 반복 | ab*c → ac, abc, abbc |
+ | 1회 이상 반복 | ab+c → abc, abbc |
? | 0회 또는 1회 | ab?c → ac, abc |
[] | 문자 집합 | [a-z] → 알파벳 소문자 |
\d | 숫자 (0~9) | \d+ → 123, 56 |
\w | 알파벳/숫자/밑줄 | \w+ → abc_123 |
\s | 공백 문자 | \s+ → ' ', \t |
` | ` | 또는 |
() | 그룹화 | (ab)+ → abab |
✅ Match 객체 사용법
m = re.match(r'(\d+)', '123abc')
print(m.group()) # 전체 매칭 결과: '123'
print(m.groups()) # 그룹: ('123',)
- .group() → 전체 매칭된 문자열
- .groups() → 괄호로 묶인 그룹들을 튜플로 반환
✅ 실전 예제 모음
1. 숫자로 시작하는 문자열
re.match(r'\d+', '123hello') # → 123
2. 이메일 주소 검증
pattern = r'^[\w.-]+@[\w.-]+\.\w+$'
re.match(pattern, 'test@example.com') # True
3. 날짜 형식 (YYYY-MM-DD)
pattern = r'^\d{4}-\d{2}-\d{2}$'
re.match(pattern, '2025-07-01') # 매칭됨
4. 한글 이름 (2~4자)
pattern = r'^[가-힣]{2,4}$'
re.match(pattern, '이자원') # 매칭됨
5. 휴대폰 번호 (010-xxxx-xxxx)
pattern = r'^01[016789]-\d{3,4}-\d{4}$'
re.match(pattern, '010-1234-5678') # 매칭됨
6. 파일 확장자 검사 (.csv, .log, .txt)
pattern = r'^.+\.(csv|log|txt)$'
re.match(pattern, 'data.csv') # 매칭됨
7. URL 주소 검사
pattern = r'^https?://[^\s]+$'
re.match(pattern, 'https://example.com') # 매칭됨
8. PLC 주소 (예: %MW10.3)
pattern = r'^%(MW|MD)(\d+)\.(\d+)$'
re.match(pattern, '%MW10.3') # ('MW', '10', '3')
✅ re.match vs re.search 차이점
함수 | 설명 |
re.match() | 문자열의 시작부터 검사 |
re.search() | 문자열 전체에서 처음 매칭되는 위치를 찾음 |
re.match(r'abc', 'abcde') # 매칭됨
re.match(r'abc', '123abc') # 매칭 안됨
re.search(r'abc', '123abc') # 매칭됨
✅ 정규식 테스트 사이트 추천
반응형
'웹 개발 > 🐍 Python' 카테고리의 다른 글
Python 타입 힌트에서 tuple, list, dict (1) | 2025.07.01 |
---|---|
Python 자주 쓰는 예외 클래스 (1) | 2025.07.01 |
Python 타입 힌트 (0) | 2025.07.01 |
리스트 컴프리헨션(list comprehension) (1) | 2025.06.30 |
파이썬 .env 사용법 (0) | 2025.05.16 |