sub(pattern, repl, string, count=0, flags=0)
sub 함수를 사용하면 정규 표현식과 일치한 부분을 다른 문자로 치환할 수 있다.
이름, 전화번호 등 개인 정보를 마스킹하는 경우에 활용할 수 있다.
사용 방법
매개변수로 패턴과 치환 문자열(repl), 치환 대상 문자열(string)을 전달받는다. 패턴을 찾지 못하면 전달받은 string을 변경하지 않고 반환한다.
예로 들어, 아래와 같은 휴대전화 번호 목록이 있다고 하자.
010-1234-5678
010-0000-0000
010-9876-5432
휴대전화 번호는 개인을 식별할 수 있는 정보이기 때문에 가운데 4개 숫자만 ****로 마스킹하고자 한다.
sub 함수에서도 그룹 재참조가 가능하다. 따라서 첫 번째 자리와 세 번째 자리 숫자는 각각 그룹 재 참조를 이용해 그대로 노출할 수 있다.
import re
pattern = '(\d{3})-(\d{4})-(\d{4})'
repl = r'\1-****-\3'
phone_number = ['010-1234-5678', '010-0000-0000', '010-9876-5432']
for pn in phone_number:
masking_pn = re.sub(pattern, repl, pn)
print(masking_pn)
subn
subn은 sub 함수와 동일한 기능을 하지만 반환 결과를 튜플로 돌려준다. 튜플의 첫 번째 요소는 변경된 문자열이고, 두 번째 요소는 변경이 발생한 횟수이다.
import re
pattern = '(\d{3})-(\d{4})-(\d{4})'
repl = r'\1-****-\3'
phone_number = ['010-1234-5678', '010-0000-0000', '010-9876-5432']
for pn in phone_number:
masking_pn = re.subn(pattern, repl, pn)
print(masking_pn)
참고 문서
https://docs.python.org/ko/3/library/re.html#re.sub