DeprecationWarning : 잘못된 이스케이프 시퀀스-\ d 대신 무엇을 사용해야합니까?


106

rePython 3.6.5에서 모듈 문제를 만났습니다 . 정규 표현식에이 패턴이 있습니다.

'\\nRevision: (\d+)\\n'

하지만 실행하면 DeprecationWarning.

나는 SO에서 문제를 검색했지만 실제로 답을 찾지 못했습니다. 대신 무엇을 사용해야 \d+합니까? 그냥 [0-9]+아니면 다른 것?


2
문제가되지 않아야합니다. 더 많은 코드를 제공 하시겠습니까?
Sraw

3
이중 이스케이프 \d또는 사용 r'\\nRevision: (\d+)\\n'?
revo

답변:


176

Python 3은 문자열 리터럴을 유니 코드 문자열로 해석하므로 \d이스케이프 된 유니 코드 문자로 처리됩니다.

r아래와 같이 앞에 추가하여 RegEx 패턴을 원시 문자열로 선언하십시오 .

r'\nRevision: (\d+)\n'

이것은 또한에 \n의해 개행 문자로 파싱되기 때문에 이스케이프를 삭제할 수 있음을 의미합니다 re.


8
좀 더 정확하게 말하면 \d인식 할 수없는 이스케이프 시퀀스로 처리되므로 변경되지 않습니다. DeprecationWarning은 Python 3.6부터 제공됩니다. 향후 버전의 Python에서는 SyntaxError가 될 것입니다. 문서의 "2.4.1. 문자열 및 바이트 리터럴"의 세부 사항.
VPfB

@VPfB 스레드는 오래되었지만 동일한 문제에 대한 답변을 찾고있었습니다. \ d가 이스케이프 된 유니 코드 문자로 취급되는 경우 정규식 패턴을 원시 문자열로 처리하지 않고 d (알파벳 문자)와 \ d (모든 숫자)를 어떻게 구별합니까? (동일한 질문이 \ w, \ W 등에 적용됩니다 ...)
giulia_dnt

2
@theggg 귀하의 질문을 올바르게 이해하면 백 슬래시를 이스케이프 처리하면 문자열이 '\\d'.
ACascarino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.