>백엔드 개발 >파이썬 튜토리얼 >Python의 정규식에 r 접두사가 항상 필요하지 않은 이유는 무엇입니까?

Python의 정규식에 r 접두사가 항상 필요하지 않은 이유는 무엇입니까?

DDD
DDD원래의
2024-10-19 17:08:30484검색

Why is an r prefix not always required for regex in Python?

Python 정규 표현식 - r 접두사

어떤 사람들은 r 접두사가 없어도 다음 정규 표현식이 작동하는 이유를 궁금해할 수 있습니다.

<code class="python">import re
print (re.sub('\s+', ' ', 'hello     there      there'))</code>

일반적으로 다음과 같습니다. 이스케이프 시퀀스를 사용할 때마다 r 접두사가 필요하다고 생각했지만 이 예는 이에 모순되는 것 같습니다.

이스케이프 시퀀스와 원시 문자열

r 접두사는 "원시 문자열"을 생성하는 데 사용됩니다. , 이는 문자열의 이스케이프 시퀀스가 ​​특수 문자로 해석되지 않음을 의미합니다. 이는 백슬래시()와 같이 일반적으로 이스케이프 시퀀스로 해석되는 문자를 사용하려는 경우 유용할 수 있습니다.

위의 예에서 이스케이프 시퀀스 s는 하나 이상의 공백과 일치하는 데 사용됩니다. 문자. r 접두사가 없으면 이 이스케이프 시퀀스는 탭 문자(t)로 해석됩니다. 그러나 r 접두사가 사용되기 때문에 이스케이프 시퀀스는 문자 그대로 해석되어 하나 이상의 공백 문자와 일치합니다.

규칙 예외

이스케이프 시퀀스가 ​​규칙에 적용되는 몇 가지 예외가 있습니다. r 접두사와 함께 사용해야 합니다. 한 가지 예외는 개행 문자를 나타내는 데 사용되는 n 이스케이프 시퀀스입니다. 다음 예와 같이 이 이스케이프 시퀀스는 r 접두사 없이 사용할 수 있습니다.

<code class="python">print '\n'</code>

또 다른 예외는 백슬래시 문자를 나타내는 데 사용되는 \ 이스케이프 시퀀스입니다. 다음 예에 표시된 것처럼 이 이스케이프 시퀀스는 r 접두사 없이 사용할 수도 있습니다.

<code class="python">print '\'</code>

결론

Python에서 이스케이프 시퀀스를 사용할 때 r 접두사가 항상 필요한 것은 아닙니다. 그러나 일반적으로 혼란이나 예상치 못한 동작을 피하기 위해 r 접두사를 사용하는 것이 좋습니다.

위 내용은 Python의 정규식에 r 접두사가 항상 필요하지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.