본문 바로가기
개발/💻 컴퓨터 공학

[Python] re 모듈로 문자열 처리하기

by 썸머뮤트 2024. 11. 13.

 

Python에서 re 모듈은 문자열을 처리할 때 특정 패턴을 가진 문자열을 검색하고, 변형하는 데 매우 유용합니다. 정규 표현식은 복잡해 보일 수 있지만, 한 번 익혀두면 매우 유용하게 쓸 수 있습니다. 이번 포스팅에서는 re 모듈의 대표적 함수 사용법을 예제와 함께 알아보겠습니다!

 

re 모듈 시작하기

Python에서 아래와 같이 re 모듈을 불러오면 사용할 준비는 끝입니다ㅎ

 
import re

 

re 모듈의 주요 함수

re.match(): 문자열의 시작에서 패턴 찾기

match 함수는 문자열의 첫 부분이 지정한 패턴과 일치하는지 확인합니다. 일치하면 Match 객체를 반환하고, 그렇지 않으면 None을 반환합니다.

import re

text = "Hello, world!"
pattern = r"Hello"

match = re.match(pattern, text)
if match:
    # 출력!
    print("매칭 성공:", match.group())
else:
    # "world Hello" 의 경우 매칭 실패
    print("매칭 실패")

 

match는 문자열의 첫 부분에서만 패턴을 찾으므로, 중간에 있는 패턴은 찾지 못합니다.

 

 

re.search(): 문자열 전체에서 패턴 찾기

search 함수는 문자열 전체에서 패턴이 있는지 확인하고, 일치하는 부분이 있다면 첫 번째로 매칭되는 부분을 반환합니다.

 
import re

text = "Say Hello to the world!"
pattern = r"Hello"

search = re.search(pattern, text)
if search:
    # 매칭된 부분: Hello
    print("매칭된 부분:", search.group())
else:
    print("매칭 실패")
 

re.findall(): 모든 일치하는 부분 찾기

findall 함수는 문자열에서 패턴에 일치하는 모든 부분을 리스트로 반환합니다. 찾고자 하는 모든 부분을 추출할 때 유용합니다.

 
import re

text = "123 apples, 456 bananas, and 789 cherries"
pattern = r"\d+"

numbers = re.findall(pattern, text)

# 모든 숫자: ['123', '456', '789']
print("모든 숫자:", numbers)
 

2.4 re.sub(): 일치하는 부분 대체하기

sub 함수는 일치하는 패턴을 다른 문자열로 대체합니다. 텍스트 변형 시 유용하게 사용할 수 있습니다.

import re

text = "Hello, John! Hello, Jane!"
pattern = r"Hello"

new_text = re.sub(pattern, "Hi", text)

# 변형된 텍스트: Hi, John! Hi, Jane!
print("변형된 텍스트:", new_text)

 

 

re.split(): 패턴을 기준으로 문자열 분할하기

split 함수는 지정한 패턴을 기준으로 문자열을 나눠 리스트 형태로 반환합니다.

 
import re

text = "apple, banana, cherry"
pattern = r",\s*"  # 쉼표와 공백을 기준으로 분할

fruits = re.split(pattern, text)

# 과일 리스트: ['apple', 'banana', 'cherry']
print("과일 리스트:", fruits)
 

정규 표현식 패턴 예시

정규 표현식은 다양한 패턴을 통해 복잡한 문자열을 처리할 수 있습니다. 몇 가지 자주 쓰이는 패턴 예시는 다음과 같습니다.

  • \d: 숫자 (0-9)
  • \D: 숫자가 아닌 문자
  • \w: 알파벳 문자나 숫자, 언더스코어
  • \W: 알파벳이나 숫자, 언더스코어가 아닌 문자
  • \s: 공백 문자
  • \S: 공백이 아닌 문자

예를 들어, \d{3}-\d{4}-\d{4}라는 패턴으로는 전화번호 형식(예: 010-1234-5678)을 찾아낼 수 있습니다.

import re

text = "연락처는 010-1234-5678 입니다."
pattern = r"\d{3}-\d{4}-\d{4}"

phone_number = re.search(pattern, text)
if phone_number:
    # 전화번호 찾음: 010-1234-5678
    print("전화번호 찾음:", phone_number.group())
else:
    print("전화번호 없음")
 

 

마무리

re 모듈은 문자열을 다룰 때 너무 편리해서 거의 반드시 사용하게 되는 것 같습니다. 다들 즐거운 코딩생활 되세요 😊