백슬래시는 특수를 리터럴로, 그 반대도
두 가지 사실:
- 메타문자를 리터럴로 매칭하려면 앞에 백슬래시:
\.는 점 매칭,\$는 달러 기호 매칭,\\는 백슬래시 매칭. - 평범한 문자에서 특수 의미 만들려면 앞에 백슬래시:
\d는 숫자,\b는 word boundary,\n은 줄바꿈.
백슬래시는 universal mode flip.
Raw string 이 정신 보호
Python, JavaScript 템플릿 리터럴, 대부분 언어에서 백슬래시는 또 string-escape 글자야. 그래서 Python string 안의 "\d" 는 정규식이 보기 전에 string parser 가 해석 — 어떤 땐 무해, 어떤 땐 catastrophic.
정규식 패턴엔 항상 raw string (또는 등가물) 사용. Python: r"\d+". Rust: r"\d+". JavaScript regex literal: /\d+/ (슬래시가 같은 보호 제공).
Raw string 없으면: Python 의 "\d" 는 우연히 "\\d" 와 같지만 "\b" 는 ASCII bell 글자 (8) — 패턴이 조용히 잘못됨.
Programmatic escape
사용자 입력이나 변수에서 정규식 빌드한다면 escape 함수 사용: Python re.escape(), JavaScript 는 polyfill 필요 (built-in 없음), Go regexp.QuoteMeta(). 절대로 raw 사용자 입력을 패턴에 concat 하지 마.