정규표현식이란 무엇인가?
정규표현식(Regular Expression, Regex)은 특정한 규칙을 가진 문자열의 패턴을 정의하고 검색하기 위한 도구입니다.
파이썬에서는 re
모듈을 사용해 정규표현식을 처리할 수 있습니다.
정규표현식을 활용하면 다음과 같은 작업을 손쉽게 처리할 수 있습니다:
- 이메일 주소 추출
- 전화번호나 우편번호 검색
- 특정 단어나 문장 패턴 필터링
- 문자열 내 숫자, 특수문자 제거
예제: 이메일 찾기
import re
text = "문의: hello@domain.com"
match = re.search(r"[a-zA-Z0-9._%+-]+@[a-zA-Z]+\.[a-zA-Z.]+", text)
if match:
print("이메일:", match.group())
해석:
re.search()
는 문자열에서 정규식과 일치하는 첫 번째 결과를 찾습니다.\w
는 문자/숫자/언더바를 뜻하며, 이메일 형식에 맞게 조합한 패턴입니다.match.group()
은 일치한 값을 반환합니다.
자주 사용하는 정규표현식 패턴과 실전 예제
정규표현식에서 사용하는 주요 기호(메타문자)는 다음과 같습니다:
패턴 | 의미 |
---|---|
\d | 숫자 (0~9) |
\w | 알파벳, 숫자, 언더바 |
\s | 공백 문자 |
. | 모든 문자 (줄바꿈 제외) |
^ | 문자열 시작 |
$ | 문자열 끝 |
* | 0회 이상 반복 |
+ | 1회 이상 반복 |
[] | 문자 집합 |
() | 그룹 |
1. 전화번호 찾기
text = "연락처: 010-1234-5678"
numbers = re.findall(r"\d{3}-\d{4}-\d{4}", text)
print(numbers)
해석:
\d{3}
은 숫자 3자리,\d{4}
는 숫자 4자리입니다.re.findall()
은 해당 패턴과 일치하는 모든 항목을 리스트로 반환합니다.
2. 문자열에서 숫자만 추출
text = "총 금액: 12,500원"
num_only = re.sub(r"[^\d]", "", text)
print(num_only) # 12500
해석:
re.sub()
은 첫 번째 인자인 패턴에 해당하는 부분을 두 번째 인자로 치환합니다.[^\d]
는 숫자가 아닌 모든 문자들을 의미하며, 이를 빈 문자열로 대체해 숫자만 남깁니다.
3. 특정 단어로 시작하는 줄 추출
log = "Error: 파일 없음\nInfo: 처리 완료"
lines = re.findall(r"^Error:.*", log, re.MULTILINE)
print(lines)
해석:
^Error:
는 'Error:'로 시작하는 줄을 의미합니다.re.MULTILINE
옵션을 주면^
와$
가 줄 기준으로 작동합니다.
실무 활용 팁과 유용한 사이트
1. 데이터 정제 시 문자 제거
text = "<h1>상품명: TV</h1>"
cleaned = re.sub(r"<.*?>", "", text)
print(cleaned) # 상품명: TV
해석:
<.*?>
는 HTML 태그 전체를 의미하는 정규표현식입니다..*?
는 가능한 짧게 일치하는 'non-greedy' 방식입니다.
2. 파일 필터링 - 특정 확장자 찾기
files = ["main.py", "readme.md", "report.pdf"]
py_files = [f for f in files if re.match(r".+\.py$", f)]
print(py_files)
해석:
.+\.py$
는 '.py'로 끝나는 문자열을 의미합니다.\.
는 점 문자 자체를 의미하기 위해 이스케이프 처리합니다.
3. 로그 파일에서 오류 항목만 추출
log = """
2023-01-01 12:00:00 INFO 시작
2023-01-01 12:01:00 ERROR 서버 응답 없음
2023-01-01 12:02:00 INFO 종료
"""
errors = re.findall(r".+ERROR.+", log)
print(errors)
해석:
정규표현식으로 특정 키워드('ERROR')가 포함된 줄만 추출할 수 있습니다.
로그 분석 자동화 작업에 매우 유용한 방식입니다.
정규표현식 학습에 유용한 사이트
- regex101.com - 실시간 테스트 및 설명
- regexr.com - 예시 기반 학습 플랫폼
정규표현식은 복잡한 문자열 속에서 필요한 정보를 정확하고 효율적으로 추출할 수 있는 강력한 도구입니다.
로그 분석, 데이터 정제, 자동화 스크립트 등에서 없어서는 안 될 기술입니다.
처음엔 어렵게 느껴질 수 있지만, 자주 쓰는 패턴부터 반복해서 실습하면 금방 익숙해집니다.
파이썬의 re
모듈과 정규표현식을 조합해, 문자열 처리의 고수가 되어보시기 바랍니다.