Python re.sub 상세 매뉴얼

Python re.sub 상세 매뉴얼
 

개요

 

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

 

주의 사항

 

  1. re.sub 함수는 패턴이 일치하는 모든 부분을 치환합니다.
    특정 부분만 치환하려면 count 파라미터를 사용하여 최대 치환 횟수를 지정해야 합니다.
  2. 정규 표현식을 사용할 때는 패턴이 정확히 일치하는지 확인해야 합니다. 잘못된 패턴은 예상치 못한 결과를 초래할 수 있습니다.
  3. 치환 함수는 패턴과 일치하는 부분 문자열을 인수로 받습니다. 함수의 반환 값이 최종 치환 문자열로 사용됩니다.
  4. 정규 표현식에서 특수 문자를 사용할 때는 이스케이프 문자를 사용하여 정확한 매칭을 보장해야 합니다.

 

참조

 

  • Python Documentation
  • 정규 표현식 관련 명령어들:
    • re.compile
    • re.search
    • re.match
    • re.findall

 

이 매뉴얼은 Python의 re.sub 함수에 대한 포괄적인 설명을 제공하며, 다양한 예제와 사용법을 통해 사용자에게 깊이 있는 이해를 제공합니다.