개요
Python의 re.sub 함수는 정규 표현식을 사용하여 문자열 내의 패턴을 검색하고, 해당 패턴을 지정된 다른 문자열로 치환하는 기능을 제공합니다.
이 함수는 문자열 처리를 자동화하고, 텍스트 데이터를 정리하는 데 매우 유용합니다.
구문
re.sub(pattern, repl, string, count=0, flags=0)
파라미터
pattern: 치환할 패턴을 지정하는 정규 표현식입니다.
re.sub(r'pattern', 'replacement', 'string')
repl: pattern과 일치하는 부분을 대체할 문자열입니다. 치환 함수가 될 수도 있습니다.
re.sub(r'pattern', 'replacement', 'string')
string: 검색 및 치환이 수행될 입력 문자열입니다.
re.sub(r'pattern', 'replacement', 'string')
count: 최대 치환 횟수를 지정합니다. 기본값은 0으로, 이는 제한 없이 모든 패턴을 치환합니다.
re.sub(r'pattern', 'replacement', 'string', count=2)
flags: 정규 표현식에 대한 추가 옵션을 지정합니다.
예를 들어 re.IGNORECASE는 대소문자를 구분하지 않고 매칭하도록 합니다.
re.sub(r'pattern', 'replacement', 'string', flags=re.IGNORECASE)
반환 값
String: 치환이 완료된 새로운 문자열을 반환합니다.
상세 설명
re.sub 함수는 문자열 내에서 특정 패턴을 검색하고, 해당 패턴을 지정된 다른 문자열로 치환하는 데 사용됩니다.
이 함수는 정규 표현식을 활용하여 복잡한 문자열 패턴을 처리할 수 있으며, 텍스트 데이터의 클렌징 및 포맷팅 작업을 자동화하는 데 유용합니다.
예제 1: 기본 사용법
단순한 문자열 치환 예제입니다.
import re
# 'apple'을 'orange'로 치환
result = re.sub(r'apple', 'orange', 'I have an apple')
print(result) # 결과: I have an orange
예제 2: 여러 패턴 치환
여러 패턴을 치환하는 예제입니다.
import re
# 숫자를 '#'으로 치환
result = re.sub(r'\d', '#', 'My phone number is 123-456-7890')
print(result) # 결과: My phone number is ###-###-####
예제 3: 대소문자 구분 없이 치환
re.IGNORECASE 플래그를 사용하여 대소문자 구분 없이 치환하는 예제입니다.
import re
# 'cat'을 'dog'으로 대소문자 구분 없이 치환
result = re.sub(r'cat', 'dog', 'Cat and cat are different.', flags=re.IGNORECASE)
print(result) # 결과: dog and dog are different.
예제 4: 치환 함수 사용
치환 문자열 대신 함수로 대체하는 예제입니다.
import re
def replace_func(match):
return match.group(0).upper()
# 소문자를 대문자로 치환
result = re.sub(r'[a-z]', replace_func, 'hello world')
print(result) # 결과: HELLO WORLD
예제 5: 최대 치환 횟수 지정
count 파라미터를 사용하여 최대 치환 횟수를 지정하는 예제입니다.
import re
# 'a'를 'o'로 최대 2회 치환
result = re.sub(r'a', 'o', 'banana banana', count=2)
print(result) # 결과: bonona banana
고급 사용법
예제 6: 복잡한 패턴 치환
복잡한 정규 표현식을 사용하여 패턴을 치환하는 예제입니다.
import re
# 이메일 주소를 '[EMAIL]'로 치환
result = re.sub(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', '[EMAIL]', 'Contact us at support@example.com')
print(result) # 결과: Contact us at [EMAIL]
예제 7: 그룹을 사용한 치환
정규 표현식 그룹을 사용하여 패턴의 일부만 치환하는 예제입니다.
import re
# 날짜 포맷을 변경 (DD-MM-YYYY -> YYYY-MM-DD)
result = re.sub(r'(\d{2})-(\d{2})-(\d{4})', r'\3-\2-\1', '23-05-2021')
print(result) # 결과: 2021-05-23
주의 사항
re.sub함수는 패턴이 일치하는 모든 부분을 치환합니다.
특정 부분만 치환하려면count파라미터를 사용하여 최대 치환 횟수를 지정해야 합니다.- 정규 표현식을 사용할 때는 패턴이 정확히 일치하는지 확인해야 합니다. 잘못된 패턴은 예상치 못한 결과를 초래할 수 있습니다.
- 치환 함수는 패턴과 일치하는 부분 문자열을 인수로 받습니다. 함수의 반환 값이 최종 치환 문자열로 사용됩니다.
- 정규 표현식에서 특수 문자를 사용할 때는 이스케이프 문자를 사용하여 정확한 매칭을 보장해야 합니다.
참조
- Python Documentation
- 정규 표현식 관련 명령어들:
re.compilere.searchre.matchre.findall
이 매뉴얼은 Python의 re.sub 함수에 대한 포괄적인 설명을 제공하며, 다양한 예제와 사용법을 통해 사용자에게 깊이 있는 이해를 제공합니다.