Python의 re 모듈은 정규 표현식을 활용하여 문자열을 처리할 수 있는 다양한 기능을 제공합니다. 이 모듈을 사용하면 복잡한 패턴을 쉽고 빠르게 처리할 수 있으며, 파일 이름 정렬이나 특정 형식의 텍스트 추출 같은 문제들을 간단히 해결할 수 있습니다.
유연성: 다양한 패턴을 사용하여 복잡한 문자열 처리 가능
성능: 문자열을 빠르게 검색하고 처리
다양한 활용성: 파일명 정렬, 텍스트 데이터 클렌징, 로그 분석 등 다양한 분야에서 사용
패턴 매칭: 문자열에서 특정 패턴을 찾기
치환: 패턴에 맞는 부분을 다른 텍스트로 대체
분할: 특정 패턴을 기준으로 문자열을 나누기
반복 탐색: 여러 패턴을 한꺼번에 검색
re.match()
함수는 문자열의 시작 부분이 특정 패턴과 일치하는지 확인하는 함수입니다.
import re
# 패턴과 일치하는 문자열
text = "Hello, world!"
# 'Hello'로 시작하는지 확인하는 정규 표현식 패턴
pattern = r"Hello"
# re.match() 사용
match = re.match(pattern, text)
if match:
print("Match found:", match.group())
else:
print("No match")
re.search()
문자열 내에서 특정 패턴을 찾는 함수입니다. 패턴을 발견하면 첫 번째 일치 항목을 반환하며, 일치하지 않으면 None을 반환합니다.
import re
text = "Sample123Text"
pattern = r"\d+" # 하나 이상의 숫자를 찾는 패턴
match = re.search(pattern, text)
if match:
print(f"Match found: {match.group()}") # 123 출력
else:
print("No match found")
re.findall()
모든 패턴 일치를 리스트로 반환하는 함수입니다.
text = "apple banana 123 orange 456"
pattern = r"\d+"
matches = re.findall(pattern, text)
print(matches) # ['123', '456']
re.compile()
자주 사용하는 정규 표현식을 컴파일하여 여러 번 사용할 수 있도록 합니다.
pattern = re.compile(r"\w+@\w+\.\w+")
text = "Send email to hello@example.com or contact@sample.org"
matches = pattern.findall(text)
print(matches) # ['hello@example.com', 'contact@sample.org']
re.sub()
자열에서 특정 패턴을 찾아 다른 문자열로 대체할 때 사용됩니다.
import re
# 원본 문자열
text = "My phone number is 123-456-7890."
# 숫자를 *로 대체하는 패턴
pattern = r"\d"
# re.sub()로 숫자를 *로 대체
new_text = re.sub(pattern, "*", text)
print(new_text) # My phone number is ***-***-****.
정규 표현식을 사용할 때 Python의 Raw String 표기법(r"")은 매우 유용합니다. 이 표기법은 문자열에서 백슬래시(\)를 일반 문자로 처리하게 해줍니다.
정규 표현식에서 백슬래시는 특별한 의미를 가지기 때문에, 이를 쉽게 표현하려면 Raw String을 사용하는 것이 좋습니다.
normal_string = "abc\n" # 줄바꿈 포함
raw_string = r"abc\n" # "\n"을 문자 그대로 해석
print(normal_string) # abc (줄바꿈 발생)
print(raw_string) # abc\n (그대로 출력)