본문 바로가기

언어/Python

[ Python ] 정규 표현식 사용하기

반응형

파이썬에서 정규표현식 사용 방법

파이썬에서 정규표현식(regular expression, regex)은 re 모듈을 통해 사용할 수 있습니다. 정규표현식은 문자열 검색, 매칭, 치환 등을 효율적으로 처리할 수 있는 강력한 도구입니다. 이 문서에서는 파이썬에서 정규표현식을 사용하는 기본적인 방법을 예제와 함께 설명합니다.

1. re 모듈 가져오기

정규표현식을 사용하기 위해서는 먼저 re 모듈을 가져와야 합니다.

import re

2. 정규표현식 기본 메소드

re 모듈에서는 여러 가지 함수와 메소드를 제공하지만, 기본적으로 자주 사용되는 네 가지 메소드를 중심으로 설명합니다.

  • re.match()
  • re.search()
  • re.findall()
  • re.sub()
2.1. re.match()

re.match() 메소드는 문자열의 시작 부분에서 정규표현식과 매칭되는 패턴을 찾습니다. 매칭이 성공하면 Match 객체를 반환하고, 실패하면 None을 반환합니다.

import re

pattern = r'^[a-zA-Z]+'
text = 'Hello123'

match = re.match(pattern, text)
if match:
    print("Match found:", match.group())
else:
    print("No match found")

위 예제에서 ^[a-zA-Z]+ 패턴은 문자열의 시작 부분에서 하나 이상의 알파벳 문자가 있는지 확인합니다.

2.2. re.search()

re.search() 메소드는 문자열 전체에서 정규표현식과 매칭되는 첫 번째 패턴을 찾습니다. 매칭이 성공하면 Match 객체를 반환하고, 실패하면 None을 반환합니다.

import re

pattern = r'[0-9]+'
text = 'Hello123'

search = re.search(pattern, text)
if search:
    print("Search found:", search.group())
else:
    print("No search found")

위 예제에서 [0-9]+ 패턴은 문자열 어디에서든 하나 이상의 숫자가 있는지 확인합니다.

2.3. re.findall()

re.findall() 메소드는 문자열에서 정규표현식과 매칭되는 모든 패턴을 리스트로 반환합니다.

import re

pattern = r'[0-9]+'
text = 'Hello123, this is 456 test 7890'

findall = re.findall(pattern, text)
print("Findall found:", findall)

위 예제에서 [0-9]+ 패턴은 문자열에서 모든 숫자 그룹을 찾아 리스트로 반환합니다.

2.4. re.sub()

re.sub() 메소드는 정규표현식과 매칭되는 모든 패턴을 다른 문자열로 대체합니다.

import re

pattern = r'[0-9]+'
text = 'Hello123, this is 456 test 7890'
replacement = '#'

sub = re.sub(pattern, replacement, text)
print("Sub result:", sub)

위 예제에서 [0-9]+ 패턴은 문자열에서 모든 숫자 그룹을 #로 대체합니다.

3. 정규표현식 패턴

정규표현식 패턴은 다양한 메타문자와 기호를 사용하여 특정 문자 또는 문자열의 패턴을 정의합니다. 몇 가지 주요 메타문자와 그 사용법은 다음과 같습니다.

  • .: 임의의 한 문자
  • ^: 문자열의 시작
  • $: 문자열의 끝
  • *: 0회 이상 반복
  • +: 1회 이상 반복
  • ?: 0회 또는 1회 반복
  • []: 문자 클래스 (예: [a-z]는 소문자 알파벳을 의미)
  • |: OR 연산자 (예: a|b는 'a' 또는 'b'를 의미)
  • () : 그룹화 (예: (abc)는 'abc'를 하나의 그룹으로 처리)

4. 예제: 이메일 주소 검증

마지막으로, 정규표현식을 사용하여 이메일 주소를 검증하는 예제를 살펴보겠습니다.

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
    else:
        return False

# 테스트
emails = ['user@example.com', 'invalid-email.com', 'test.user@domain.co']
for email in emails:
    print(f"{email}: {validate_email(email)}")

위 예제에서 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ 패턴은 이메일 주소의 형식을 검증합니다. 각 이메일 주소를 검사하여 유효한지 여부를 출력합니다.

이처럼 파이썬의 re 모듈과 정규표현식을 사용하면 문자열 처리 작업을 간편하고 효율적으로 수행할 수 있습니다. 다양한 패턴과 메소드를 활용하여 복잡한 문자열 매칭 및 치환 작업을 처리할 수 있습니다.

반응형