Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

yhimsdokdo

정규 표현식의 매력: 파이썬으로 쉽게 배우기 본문

카테고리 없음

정규 표현식의 매력: 파이썬으로 쉽게 배우기

yhimsdokdo 2025. 3. 18. 04:46

파이썬에서 정규 표현식 쉽게 다루기

파이썬에서 정규 표현식은 문자열 검색, 대체, 추출 및 검증과 같은 작업을 수행할 때 매우 유용한 도구입니다. 정규 표현식은 복잡한 문자열을 효율적으로 처리할 수 있게 해주며, 이를 통해 다양한 데이터 분석 작업을 수행할 수 있습니다. 본 글에서는 초보자들이 파이썬에서 정규 표현식을 쉽게 다룰 수 있도록 기초부터 실습 예제까지 설명하겠습니다.

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

정규 표현식, 또는 레귤러 익스프레션(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 모듈을 활용하면 복잡한 문자열 작업을 간편하게 수행할 수 있습니다. 본 글에서는 정규 표현식의 기초와 주요 기능, 실습 예제를 제공했습니다. 초보자들이 정규 표현식을 이해하고 활용하는 데 도움이 되길 바랍니다. 다양한 패턴을 실습하며 깊이 있는 이해를 쌓아 나가기를 바랍니다.