파이썬 공식 문서에 따르면 정규식에서 가장 중요한 메타 문자는 아마도 백슬래시(\)일 것입니다. 파이썬 문자열 리터럴과 마찬가지로, 백슬래시 뒤에 다양한 문자를 붙여 여러 특수 시퀀스를 나타낼 수 있습니다. 예를 들어 \d는 숫자 한 개를 의미합니다.
또한 백슬래시는 모든 메타 문자를 이스케이프(escape)하는 용도로도 사용됩니다. 덕분에 패턴 안에서 메타 문자 자체를 그대로 매칭할 수 있습니다. 예를 들어 [나 \를 찾아야 한다면 앞에 백슬래시를 붙여 특수 의미를 제거하면 됩니다. 즉, \[ 또는 \\처럼 표현합니다.
예제
다음 코드는 파이썬 정규식에서 백슬래시가 실제로 어떻게 동작하는지 보여줍니다.
import re
# 일반 문자열로 패턴 지정
result = re.search('\d', '\d')
print(result)
# 원시(raw) 문자열로 패턴 지정
result = re.search(r'\\d', '\d')
print(result.group())출력 결과
None \d
결과 분석
첫 번째 검색인 re.search('\d', '\d')는 None을 반환합니다. 일반 문자열에서 '\d'는 별도의 이스케이프 처리 없이 백슬래시와 문자 d로 해석되며, 정규식 패턴 관점에서는 "숫자 한 개"를 뜻합니다. 그런데 검색 대상 문자열 '\d'에는 숫자가 아니라 문자 \와 d가 들어 있으므로 매칭에 실패하는 것입니다.
반면 두 번째 검색인 re.search(r'\\d', '\d')는 성공적으로 \d를 반환합니다. 원시(raw) 문자열 r'\\d'는 백슬래시 두 개를 그대로 유지하므로, 정규식 패턴은 "리터럴 백슬래시 하나 뒤에 오는 문자 d"를 의미하게 됩니다. 이는 대상 문자열 '\d'(백슬래시 + d)와 정확히 일치하기 때문입니다.
정리
이처럼 백슬래시는 정규식에서 두 가지 핵심 역할을 수행합니다. 첫째, \d, \w, \s 같은 특수 시퀀스를 만드는 것이고, 둘째, 메타 문자의 특수 기능을 제거하여 문자 그대로 매칭할 수 있게 하는 것입니다. 원시 문자열(r-string)을 활용하면 백슬래시 처리가 훨씬 직관적이므로, 정규식을 작성할 때는 r'' 형태의 원시 문자열 사용을 권장합니다.