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 모듈은 문자열을 다룰 때 너무 편리해서 거의 반드시 사용하게 되는 것 같습니다. 다들 즐거운 코딩생활 되세요 😊
'개발 > 💻 컴퓨터 공학' 카테고리의 다른 글
[Python] try 구문 모든 예외 처리하기 (1) | 2024.11.07 |
---|---|
[Python] Python은 난수를 어떻게 생성할까? (3) | 2024.10.29 |
[Python] 파이썬 GIL - Multiprocess vs Multithread (3) | 2024.10.29 |
[OS] Process(프로세스)란? (0) | 2024.09.02 |