re.escape() 함수로 특수 문자 이스케이프하기
파이썬에서 정규식 패턴을 작성하다 보면 별표(*), 물음표(?), 마침표(.), 괄호(() ) 같은 특수 문자들이 정규식 문법으로 잘못 해석될 수 있습니다. 이런 문자들을 리터럴 그대로 매칭하고 싶다면 각 문자 앞에 백슬래시(\)를 붙여 이스케이프해야 합니다.
파이썬의 re 모듈은 이 작업을 한 번에 처리해 주는 re.escape() 함수를 제공합니다. 이 함수는 문자열 내의 모든 특수 문자를 자동으로 찾아 백슬래시를 붙인 결과를 반환하므로, 임의의 문자열을 정규식 패턴으로 안전하게 사용할 수 있습니다.
사용 예제
다음 코드는 주어진 문자열의 모든 특수 문자를 re.escape() 메서드로 이스케이프 처리하는 방법을 보여줍니다.
>>> import re >>> p = '5*(67).89?' >>> re.escape(p) '5\\*\\(67\\)\\.89\\?'
실행 결과를 살펴보면, 원본 문자열 '5*(67).89?'에 포함된 *, (, ), ., ?와 같은 특수 문자들이 모두 백슬래시로 이스케이프되어 '5\*\(67\)\.89\?' 형태로 변환된 것을 확인할 수 있습니다.
참고 사항
파이썬 3.7부터는 re.escape()가 정규식에서 실제로 특별한 의미를 가지는 문자만 이스케이프하도록 동작이 개선되었습니다. 따라서 최신 버전의 파이썬에서는 불필요한 문자까지 이스케이프되지 않으므로, 생성된 패턴이 더 깔끔하고 가독성이 좋습니다.
사용자 입력값을 정규식 검색에 활용할 때처럼 패턴에 특수 문자가 포함될 가능성이 있는 경우, re.escape()를 사용하면 의도치 않은 매칭 오류나 예외 발생을 효과적으로 방지할 수 있습니다.