본문 바로가기

프로그래밍 언어/파이썬

파이썬(Python) 정규 표현식 기초부터 고급 활용까지

파이썬(Python) 정규 표현식 기초부터 고급 활용까지

파이썬에서 정규 표현식(Regex)은 문자열을 검색하고 조작하는 데 강력한 도구입니다. 정규 표현식은 특정 패턴을 찾거나 복잡한 문자열 작업을 단순화할 수 있습니다. 이 글에서는 정규 표현식의 기본 개념부터 고급 활용 방법까지 단계별로 알아보겠습니다.

 

 

 

1. 정규 표현식이란?

정규 표현식은 문자열에서 특정 패턴을 찾기 위한 일련의 문자입니다. 복잡한 문자열 검색, 대체 및 조작 작업을 간단하고 효율적으로 수행할 수 있게 해줍니다.

 

 

2. 파이썬에서 정규 표현식 사용하기

파이썬에서는 re 모듈을 사용하여 정규 표현식을 다룰 수 있습니다. 이 모듈을 사용하면 정규 표현식을 정의하고 이를 사용하여 문자열을 검색, 일치, 분할 등의 작업을 수행할 수 있습니다.

import re

pattern = r'\bword\b'
text = 'A word in a sentence.'
match = re.search(pattern, text)

if match:
    print('패턴이 발견되었습니다:', match.group())

 

 

3. 기본 패턴과 메타 문자

정규 표현식에서 패턴을 정의하기 위해 다양한 메타 문자를 사용할 수 있습니다.

기본 패턴

  • .: 임의의 한 문자
  • ^: 문자열의 시작
  • $: 문자열의 끝
  • *: 0회 이상 반복
  • +: 1회 이상 반복
  • ?: 0회 또는 1회

메타 문자

  • \d: 숫자와 일치
  • \w: 문자와 일치
  • \s: 공백 문자와 일치
  • [abc]: a, b 또는 c 중 하나와 일치
  • [^abc]: a, b, c 이외의 문자와 일치
  • a{2}: a가 정확히 2회 반복

 

 

4. 정규 표현식 함수

파이썬 re 모듈은 정규 표현식을 다루기 위한 여러 함수를 제공합니다.

search

문자열에서 패턴을 검색합니다.

match = re.search(r'\d+', 'My number is 123')
print(match.group())  # 123

match

문자열의 시작에서 패턴을 검색합니다.

match = re.match(r'\d+', '123 is my number')
print(match.group())  # 123

findall

문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다.

matches = re.findall(r'\d+', 'There are 123 apples and 456 oranges')
print(matches)  # ['123', '456']

sub

문자열에서 패턴과 일치하는 부분을 다른 문자열로 대체합니다.

result = re.sub(r'apple', 'banana', 'I like apple')
print(result)  # I like banana

 

 

 

 

5. 고급 패턴과 응용

정규 표현식을 더욱 강력하게 활용하기 위해 고급 패턴과 기법을 사용할 수 있습니다.

그룹핑과 역참조

괄호를 사용하여 패턴의 일부분을 그룹으로 묶을 수 있습니다. 역참조를 사용하면 동일한 그룹을 다시 참조할 수 있습니다.

pattern = r'(\b\w+)\s+\1'
text = 'hello hello world'
match = re.search(pattern, text)
print(match.group())  # hello hello

전방탐색과 후방탐색

특정 패턴 앞이나 뒤에 특정 패턴이 있는지 확인할 수 있습니다.

pattern = r'(?<=\$)\d+'
text = 'The price is $100'
match = re.search(pattern, text)
print(match.group())  # 100

 

 

6. 실전 예제

정규 표현식을 실제로 어떻게 활용할 수 있는지 몇 가지 예제를 통해 알아보겠습니다.

이메일 주소 유효성 검사

pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
email = 'example@example.com'
if re.match(pattern, email):
    print('유효한 이메일 주소입니다.')
else:
    print('유효하지 않은 이메일 주소입니다.')

전화번호 형식 변환

pattern = r'(\d{3})-(\d{3})-(\d{4})'
text = 'My number is 123-456-7890'
result = re.sub(pattern, r'(\1) \2-\3', text)
print(result)  # My number is (123) 456-7890

 

 

7. 결론

파이썬에서 정규 표현식을 사용하면 문자열을 효율적으로 검색하고 조작할 수 있습니다. 기본 개념부터 고급 패턴까지 익히면 다양한 문자열 처리 작업을 간편하게 수행할 수 있습니다. 이 가이드에서 소개한 내용을 바탕으로 정규 표현식을 활용하여 복잡한 문자열 작업을 더욱 쉽게 해결해 보세요.