본문 바로가기
카테고리 없음

[파이선 심화] 정규표현식의 뜻, 자주 사용하는 정규표현식, 활용 방법과 팁

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 7.

정규표현식이란 무엇인가?

정규표현식(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')가 포함된 줄만 추출할 수 있습니다.
로그 분석 자동화 작업에 매우 유용한 방식입니다.

정규표현식 학습에 유용한 사이트

정규표현식은 복잡한 문자열 속에서 필요한 정보를 정확하고 효율적으로 추출할 수 있는 강력한 도구입니다.
로그 분석, 데이터 정제, 자동화 스크립트 등에서 없어서는 안 될 기술입니다.

처음엔 어렵게 느껴질 수 있지만, 자주 쓰는 패턴부터 반복해서 실습하면 금방 익숙해집니다.
파이썬의 re 모듈과 정규표현식을 조합해, 문자열 처리의 고수가 되어보시기 바랍니다.