Python에서 정규식(Regex)을 사용하는 방법
내장된 re 모듈을 사용하여 Python 정규식을 마스터하세요. 문자열 일치, 패턴 검색, 모든 항목 찾기 및 텍스트 바꾸기를 알아보세요.
개요
일반적으로 정규식으로 알려진 정규식은 특정 패턴을 기반으로 텍스트 문자열을 일치, 검색 및 조작하는 데 사용되는 강력한 템플릿입니다. Regex는 이메일 확인, 전화번호 확인, 웹 스크래핑, 로그 구문 분석, 텍스트 검색 및 바꾸기 작업에 널리 사용됩니다. Python은 내장 `re` 모듈을 통해 전체 정규식 기능을 제공합니다.
`re` 모듈은 목표에 따라 몇 가지 주요 기능을 제공합니다. `re.search(pattern, string)` 함수는 문자열을 검색하고 패턴이 처음 나타나는 항목에 대한 일치 개체를 반환합니다. `re.match(pattern, string)` 함수는 유사하지만 문자열의 맨 처음부터만 검색합니다. 텍스트 블록에 있는 패턴의 모든 인스턴스를 검색하려는 경우 `re.findall(pattern, string)`은 이를 문자열 목록으로 반환합니다.
정규식 패턴은 숫자의 경우 `\d`, 영숫자 문자의 경우 `\w`, 하나 이상의 경우 `+`, 0개 이상의 경우 `*`와 같은 특수 메타 문자를 활용합니다. Python에서 정규 표현식을 작성할 때, Python이 백슬래시를 이스케이프 시퀀스로 처리하지 못하도록 원시 문자열 리터럴(`r"\d+"`와 같이 `r` 접두사가 붙음)을 사용하는 것이 표준 관행입니다.
코드 및 실행 출력
이 스크립트는 re 모듈을 사용하여 형식 구조의 유효성을 검사하고, 숫자 토큰을 추출하고, 일치하는 패턴을 바꾸는 방법을 보여줍니다.
import re
# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"
match = re.search(pattern_port, log_message)
if match:
print("Found port pattern:", match.group())
# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)
# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25단계별 구현
- 내장된 re 모듈을 가져옵니다.
- 이스케이프 시퀀스 문제를 방지하려면 r"\d+"와 같은 원시 문자열을 사용하여 정규식 검색 패턴을 정의하세요.
- re.search()를 사용하여 첫 번째 항목을 찾거나 re.findall()을 사용하여 일치하는 모든 하위 문자열을 수집합니다.
- 텍스트 내에서 패턴 기반 교체를 수행하려면 re.sub(pattern, replacement, string)를 사용하세요.
자주 묻는 질문
정규식 패턴에 원시 문자열(r"...")을 사용하면 어떤 이점이 있나요?
원시 문자열은 백슬래시를 이스케이프 문자가 아닌 리터럴 문자로 처리합니다. 예를 들어, r"\n"은 백슬래시 뒤에 "n"이 오는 것을 나타내고, "\n"은 개행 문자를 나타냅니다.
정규식 일치가 성공했는지 어떻게 확인하나요?
re.search() 및 re.match()는 성공하면 일치 객체를 반환하고, 일치 항목이 없으면 None을 반환합니다. 조건문(예: if match:)을 사용하여 결과를 확인해야 합니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 루프
Python 루프를 사용하여 데이터를 반복하는 방법을 알아보세요. 대화형 예제를 통해 for 루프, while 루프, 중단, 계속 및 루프 모범 사례를 마스터하세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.