긍정형 탐색의 경우 기존에 사용하던 정규표현식의 앞/뒤에 붙여 사용하면 주어진 조건대로 검색을 하되 조건 X와 일치하는 문자는 결과에서 제외하지만, 반대로 부정형 탐색의 경우 조건 X와 일치하지 않는 문자를 결과에서 제외합니다. 부정형은 잘 사용되지 않으나 ~원, $ 형태로 금액을 찾을 때나 금액 단위를 제외하고 싶을 때 유용합니다.
따라서 문제를 풀기 위해선 긍정형 전방 탐색을 사용해 sub() 함수로 탐색된 단어 이외의 모든 단어를 *로 치환하면 됩니다. 바로 확인해보겠습니다.
전체 코드
4장/핸드폰_번호_가리기.py
import re
def solution(s):
return re.sub('\d(?=\d{4})', '*', s)
먼저 \d는 해당하는 모든 숫자를 검색하고, 곧이어 긍정 전방 탐색으로 검색된 결과의 마지막 4글자를 제외해서 글자 길이에 상관없이 정확히 나머지를 *로 치환합니다. 이처럼 정규표현식을 많이 알수록 문자열 조작이 훨씬 편해질 것입니다.