Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 정규식에서 백슬래시(\)가 작동하는 방식

파이썬 공식 문서에 따르면 정규식에서 가장 중요한 메타 문자는 아마도 백슬래시(\)일 것입니다. 파이썬 문자열 리터럴과 마찬가지로, 백슬래시 뒤에 다양한 문자를 붙여 여러 특수 시퀀스를 나타낼 수 있습니다. 예를 들어 \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'' 형태의 원시 문자열 사용을 권장합니다.