yhimsdokdo
정규 표현식의 매력: 파이썬으로 쉽게 배우기 본문
파이썬에서 정규 표현식 쉽게 다루기
파이썬에서 정규 표현식은 문자열 검색, 대체, 추출 및 검증과 같은 작업을 수행할 때 매우 유용한 도구입니다. 정규 표현식은 복잡한 문자열을 효율적으로 처리할 수 있게 해주며, 이를 통해 다양한 데이터 분석 작업을 수행할 수 있습니다. 본 글에서는 초보자들이 파이썬에서 정규 표현식을 쉽게 다룰 수 있도록 기초부터 실습 예제까지 설명하겠습니다.
정규 표현식이란 무엇인가?
정규 표현식, 또는 레귤러 익스프레션(Regular Expression, regex)은 특정 패턴을 정의하여 문자열을 검증하거나 변환하는 데 사용되는 강력한 도구입니다. 정규 표현식은 여러 프로그래밍 언어에서 지원되며, 파이썬에서도 표준 라이브러리인 re
모듈을 통해 사용할 수 있습니다.
정규 표현식의 기본 구성 요소
정규 표현식은 패턴으로 구성되며, 이 패턴은 문자, 기호 및 특수 문자를 포함합니다. 아래는 정규 표현식의 주요 구성 요소입니다.
- 문자: 알파벳(대문자 및 소문자), 숫자 및 기호
- 메타 문자: 정규 표현식의 감지를 조작하는데 사용되는 특수 문자
- 수량자: 특정 문자가 몇 번 나타날 수 있는지를 정의
- 그룹화: 서브 표현식을 생성하여 복잡한 패턴을 명확하게 정리
파이썬에서 정규 표현식 사용하기
파이썬에서 정규 표현식을 사용하기 위해서는 먼저 re
모듈을 임포트해야 합니다. 다음으로, 제공되는 다양한 함수를 사용하여 정규 표현식을 적용할 수 있습니다.
re 모듈 임포트
import re
주요 함수
다음은 re
모듈에서 제공하는 유용한 함수들입니다.
- re.match(pattern, string): 문자열의 시작에서 패턴이 일치하는지 검사
- re.search(pattern, string): 문자열 내에서 패턴이 존재하는지 검색
- re.findall(pattern, string): 문자열 내의 모든 일치 결과를 리스트로 반환
- re.sub(pattern, repl, string): 패턴과 일치하는 모든 부분을 다른 문자열로 대체
정규 표현식의 메타 문자
메타 문자는 정규 표현식의 기능을 확장해줍니다. 주요 메타 문자는 다음과 같습니다.
메타 문자 | 설명 |
---|---|
. | 임의의 한 문자와 일치 |
^ | 문자열의 시작을 나타냄 |
$ | 문자열의 끝을 나타냄 |
* | 이전 문자가 0번 이상 반복됨을 의미 |
+ | 이전 문자가 1번 이상 반복됨을 의미 |
? | 이전 문자가 0번 또는 1번 나타날 수 있음을 의미 |
{n} | 이전 문자가 정확히 n번 반복됨을 의미 |
{n, m} | 이전 문자가 n번 이상 m번 이하로 반복됨을 의미 |
[] | 문자 클래스, 대괄호 안의 문자 중 하나와 일치 |
\ | 메타 문자를 이스케이프 처리 |
실습 예제
예제 1: 이메일 주소 검증
이메일 주소의 유효성을 체크하기 위해 정규 표현식을 사용할 수 있습니다. 아래 코드에서는 이메일 형식에 대한 간단한 정규 표현식을 작성했습니다.
import re
def validate_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
if re.match(pattern, email):
return True
return False
email_list = ['test@example.com', 'invalid-email', 'user@domain.co.kr']
for email in email_list:
print(f'{email}: {validate_email(email)}')
예제 2: 전화번호 형식 추출
전화번호 형식을 문자열에서 추출하려면 re.findall
함수를 사용할 수 있습니다. 다음은 전화번호 형식을 추출하는 예제입니다.
import re
text = "연락처: 010-1234-5678, 02-123-4567, +82-10-9876-5432"
pattern = r'\+?\d{0,2}-?\d{1,4}-?\d{4}-?\d{4}'
phone_numbers = re.findall(pattern, text)
print(phone_numbers)
예제 3: 문자열 대체
정규 표현식을 사용하여 특정 문자열을 다른 문자열로 대체할 수 있습니다. 아래 예제에서는 모든 공백 문자를 하이픈으로 대체합니다.
import re
text = "파이썬에서 정규 표현식을 이용해 문자열을 대체합니다."
new_text = re.sub(r'\s+', '-', text)
print(new_text)
고급 사용법
그룹화
정규 표현식에서 그룹을 사용하면 특정 부분을 캡슐화하여 그 부분에 대해 반복, 변환 작업을 할 수 있습니다. 그룹은 괄호로 만들어집니다.
import re
text = "2023-10-01, 2023-10-02, 2023-10-03"
pattern = r'(\d{4})-(\d{2})-(\d{2})'
dates = re.findall(pattern, text)
for date in dates:
print(f'연도: {date[0]}, 월: {date[1]}, 일: {date[2]}')
전방 탐색과 후방 탐색
전방 탐색((?=...))과 후방 탐색(
(?<=...))을 사용하면 특정 조건을 가진 문자열을 찾아낼 수 있습니다. 예를 들어, 앞에 "abc"가 있는 "123"을 찾고 싶다면 다음과 같은 정규 표현식을 사용할 수 있습니다.
import re
text = "abc123, abc456, def123"
pattern = r'(?<=abc)\d+'
results = re.findall(pattern, text)
print(results)
마무리
정규 표현식은 문자열을 다루는 데 있어 매우 강력한 도구입니다. 파이썬의 re
모듈을 활용하면 복잡한 문자열 작업을 간편하게 수행할 수 있습니다. 본 글에서는 정규 표현식의 기초와 주요 기능, 실습 예제를 제공했습니다. 초보자들이 정규 표현식을 이해하고 활용하는 데 도움이 되길 바랍니다. 다양한 패턴을 실습하며 깊이 있는 이해를 쌓아 나가기를 바랍니다.





