為什麼下面的第一個範例在沒有轉義序列之前的“r”前綴?人們普遍認為,在處理轉義序列時它應該是強制性的。
<code class="python"># example 1 import re print(re.sub('\s+', ' ', 'hello there there')) # prints 'hello there there' - not expected as r prefix is not used</code>
「r」前綴在正規表示式模式中並不總是必需的,儘管建議使用它的一般規則use.
在轉在義序列中,反斜線() 用作解釋特殊字元序列或轉義具有特殊意義的字元的指示符。但是,並非所有以反斜線開頭的序列都被視為有效的轉義序列。
為了說明這一點,請考慮以下範例:
當「r」前綴不存在於轉義序列之前,Python 僅當它是可識別的轉義序列時才解釋它。換句話說,它不會嘗試解釋像 's' 這樣的無效轉義序列。
可以在提供的第一個範例中觀察到此行為:
但是,當使用「r」前綴時,模式中的所有字元均按字面解釋。這意味著 r's' 代表一個原義反斜杠字符,後跟字母 's'。
雖然「r」前綴並不是所有轉義序列都嚴格要求的,但通常是建議使用它,特別是在處理包含多個轉義序列的複雜模式時。這有助於避免混亂和意外後果。
以上是Python 正規表示式:轉義序列必須使用「r」前綴嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!