치환 — 정규식의 나머지 절반
re.sub(pattern, replacement, text) 가 모든 비-overlapping 매칭을 replacement 로 치환.
치환 가능:
- 리터럴 문자열:
re.sub(r'\d+', 'NUM', 'a 1 b 22 c 333')→'a NUM b NUM c NUM' - Backreference 있는 패턴: group 1 은
r'\1', named 그룹은r'\g<name>', 전체 매칭은r'\g<0>'. - Callable: Match 객체 받고 문자열 반환. 동적 로직에 가장 강력.
count 파라미터
re.sub(pattern, replacement, text, count=N) 가 첫 N 매칭만 치환. "첫 등장만 수정" 또는 "X 개 이상 처리 안 함" 에 유용.
re.subn — 카운트 받기
re.subn 이 튜플 (new_string, num_replacements) 반환. 뭔가 변했는지 알아야 할 때 유용.
re.split — 정규식 구분자로 split
re.split(pattern, text) 는 str.split 같지만 구분자가 어떤 정규식이든. 모든 매칭에서 split.
패턴에 캡처 그룹 있으면 캡처된 텍스트가 결과 리스트에 INCLUDED. re.split(r'(\W+)', 'hello, world') 가 ['hello', ', ', 'world'] 반환 — 구분자 보존.