Python Regex: re 모듈을 사용한 패턴 일치

Python의 정규식(Regex)을 마스터하세요. 내장된 re 라이브러리를 사용하여 문자열 데이터를 검색, 일치, 분할 및 대체하는 방법을 알아보세요.

에디터에서 사용해 보세요

개요

정규 표현식(종종 regex로 축약됨)은 고급 텍스트 검색, 문자열 일치 및 조작에 사용되는 미니 언어입니다. 간단한 문자열 값을 확인하는 대신 정규식을 사용하면 방대한 텍스트 본문 내부를 검색할 복잡한 패턴을 정의할 수 있습니다. 예를 들어 문서에서 모든 이메일 주소, 전화번호 또는 URL을 찾는 것은 정규식으로 표현하기는 간단하지만 일반적인 문자열 방법을 사용하여 작성하기는 매우 복잡합니다.

Python은 `re` 모듈을 통해 정규식에 대한 기본 지원을 제공합니다. 이 모듈에는 첫 번째 일치 항목을 찾는 `re.search()`, 일치하는 모든 하위 문자열을 목록으로 검색하는 `re.findall()`, 일치 개체를 반복하는 `re.finditer()`와 같은 중요한 함수가 포함되어 있습니다. 각 일치 개체는 일치하는 하위 문자열의 정확한 시작 및 끝 위치 인덱스와 일치하는 텍스트 자체와 같은 메타데이터를 제공합니다.

정규식 패턴은 특수 메타 문자를 활용합니다. `\d`는 모든 숫자와 일치하고 `\w`는 영숫자 문자와 일치하며 `+`는 하나 이상의 반복과 일치하며 대괄호 `[...]`는 문자 집합을 정의합니다. 괄호 `(...)`로 그룹화하면 패턴의 특정 부분을 추출할 수 있습니다. 또한 `re.sub()`를 사용하면 패턴을 검색하고 이를 새 문자열로 바꿀 수 있습니다. 정규식은 학습 곡선이 가파르지만 이를 익히면 텍스트 처리를 위한 믿을 수 없을 만큼 빠르고 다양한 도구를 얻을 수 있습니다.

코드 및 실행 출력

re 모듈을 사용하여 이메일 주소의 구성 요소를 검증하고 추출합니다.

import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
터미널 출력
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

단계별 구현

  • 형식 입력 확인(이메일, 전화, 비밀번호)
  • 상태 코드에 대한 서버 액세스 로그 구문 분석
  • 원시 HTML 및 마크다운 보고서에서 정보 스크랩

자주 묻는 질문

정규식 패턴에서 'r' 접두사의 의미는 무엇입니까?

이는 '원시 문자열'을 나타냅니다. 원시 문자열은 백슬래시(\)를 이스케이프 문자 대신 리터럴 문자로 처리하여 정규식 와일드카드와의 구문 충돌을 방지합니다.

re.match와 re.search의 차이점은 무엇인가요?

re.match는 문자열의 맨 처음부터 시작하는 일치 항목만 확인하는 반면, re.search는 전체 문자열에서 일치 항목을 검색합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.