파이썬에서 문자열 처리를 할 때, 정규 표현식(Regular Expressions, 줄여서 regex)은 매우 유용한 도구다. 정규 표현식을 사용하면 패턴을 기반으로 문자열을 검색하고, 수정하며, 추출할 수 있다. 이 글에서는 정규 표현식의 기본 개념부터 활용 방법까지 단계별로 살펴보자.
정규 표현식은 문자열에서 특정 패턴을 찾고, 대체하거나 삭제하는 데 사용되는 문자열 검색 패턴이다. 다양한 문자 집합과 메타문자를 사용하여 복잡한 문자열 패턴을 정의할 수 있다.
파이썬에서 정규 표현식을 사용하려면 re 모듈을 활용해야 한다. 이 모듈은 다양한 정규 표현식 기능을 제공하며, 기본적으로 다음과 같은 메서드를 지원한다:
정규 표현식은 다양한 문자와 기호로 구성된다. 주요 구성 요소는 다음과 같다:
리터럴 문자는 패턴에서 직접적으로 검색할 문자를 의미한다. 예를 들어, r"abc"는 문자열 "abc"를 찾는다.
메타문자는 특수한 의미를 가지며, 정규 표현식의 패턴을 정의하는 데 사용된다. 주요 메타문자는 다음과 같다:
문자 클래스는 대괄호 []를 사용하여 정의한다. 이 안에 포함된 문자 중 하나와 일치한다. 예를 들어:
정규 표현식의 기본 개념을 이해하는 데 도움을 주기 위해 몇 가지 예시를 살펴보자:
import re
text = "문의 사항은 example@example.com으로 보내주세요."
pattern = r"\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}\b"
matches = re.findall(pattern, text)
print(matches)
출력:
['example@example.com']
이 정규 표현식은 이메일 주소의 기본적인 형식을 검증한다. \b는 단어 경계를 나타내며, [\w.%+-]+ 는 이메일 사용자 이름 부분을, @는 @ 문자를, [\w.-]+ 는 도메인 이름 부분을, .[a-zA-Z]{2,} 는 도메인 확장자를 나타낸다.
import re
text = "연락처: 010-1234-5678, 02-345-6789, 123-456-7890"
pattern = r"\b\d{2,4}[-]\d{2,4}[-]\d{4}\b"
matches = re.findall(pattern, text)
print(matches)
출력:
['010-1234-5678', '02-345-6789', '123-456-7890']
이 정규 표현식은 전화번호 형식의 문자열을 찾는다. \d{2,4}는 2에서 4자리의 숫자를 나타내며, [-]는 하이픈 문자와 일치한다.
정규 표현식을 사용할 때, 복잡한 패턴을 사용할수록 오류가 발생할 확률이 높다. 따라서 다음과 같은 팁을 기억하면 유용하다:
정규 표현식은 문자열 처리에서 강력한 도구다. 이 글에서는 정규 표현식의 기본 개념과 주요 메서드, 패턴 구성 요소를 소개했다. 정규 표현식을 잘 활용하면 복잡한 문자열 작업을 훨씬 수월하게 처리할 수 있다. 다양한 정규 표현식 예제와 실습을 통해 숙련도를 높여보자!