치환은 정규식의 또 다른 절반이야
re.sub(pattern, replacement, text)는 서로 겹치지 않는 매칭을 모두 replacement로 바꿔.
치환값에는 다음 세 가지를 사용할 수 있어.
- 리터럴 문자열:
re.sub(r'\d+', 'NUM', 'a 1 b 22 c 333')→'a NUM b NUM c NUM' - 역참조가 든 치환 문자열: 그룹 1은
r'\1', 이름 붙은 그룹은r'\g<name>', 전체 매칭은r'\g<0>'으로 참조해. - 콜백 함수: 일치 객체를 받아 새 문자열을 반환해. 조회나 조건 분기처럼 동적인 로직에 알맞아.
count 매개변수
re.sub(pattern, replacement, text, count=N)은 앞에서부터 최대 N개만 치환해. 첫 번째 등장만 고치거나 치환 횟수에 상한을 둘 때 유용해.
re.subn으로 치환 횟수도 받기
re.subn은 (new_string, num_replacements) 튜플을 반환해. 실제로 내용이 바뀌었는지 함께 확인할 수 있어.
정규식 구분자로 나누는 re.split
re.split(pattern, text)는 str.split과 비슷하지만 구분자 자리에 정규식을 받아. 패턴이 매칭된 위치마다 문자열을 나눠.
패턴에 캡처 그룹이 있으면 구분자로 잡힌 텍스트도 결과 목록에 들어가. 예를 들어 re.split(r'(\W+)', 'hello, world')는 구분자를 보존한 ['hello', ', ', 'world']를 반환해.