Double-escape 문제
Python 문자열에서 백슬래시 \ 가 escape 글자. '\n' 은 줄바꿈; '\t' 는 탭; '\b' 는 ASCII bell.
정규식 패턴에서도 백슬래시가 escape 글자. \d 는 숫자; \b 는 word boundary; \. 는 리터럴 점.
Raw string 없이는 정규식 digit class 위해 '\\d' 작성 — Python string parser 위해 한 백슬래시, 정규식 위해 다른 백슬래시. 짜증나고 에러 prone.
Raw string 이 Python 해석 비활성
문자열 리터럴에 r 접두: r'\d+'. 이제 Python 이 백슬래시 해석 안 함 — 정규식에 변경 없이 통과. r'\b\w+\b' 가 보이는 그대로 의미.
Raw string 없이 버그 종류
Python 의 '\b' 는 ASCII bell 글자 (chr(8)). re.search('\bword', text) 작성하면 Python 이 패턴을 '\x08word' 로 봄 — 의도한 거 절대 아님. 일부 패턴은 raw string 없이도 동작 ('\d' 가 유효한 Python escape 아니라 두 글자로 머묾) 하지만 의존하는 거 fragile.
Python 정규식 패턴엔 항상 raw string. 예외 없음.
동적 패턴엔 f-string
변수 interpolate 하려면 raw + f-string 결합: rf'\b{word}\b'. 또는 사용자 입력 interpolate 할 때 re.escape: rf'\b{re.escape(word)}\b'.