簡體   English   中英

為什么\ g <0>在re.sub中的行為與\ 0不同?

[英]Why \g<0> behaves differently than \0 in re.sub?

我正在使用Python 3.3

re.sub("(.)(.)",r"\2\1\g<0>","ab")  returns baab

re.sub("(.)(.)",r"\2\1\0","ab")  returns ba

這是sub方法中的錯誤還是由於某種原因sub方法無法識別\\ 0?

本頁所示\\0被解釋為空字符( \\x00 ),組編號從Python開始為1(根據re模塊文檔):

\\數

匹配相同編號的組的內容。 從1開始編號 例如, (.+) \\1匹配'the'或'55 55',但不匹配'thethe'(注意組后面的空格)。 此特殊序列只能用於匹配前99個組中的一個。 如果數字的第一個數字是0 ,或者數字是3個八進制數字長, 則不會將其解釋為組匹配 ,而是解釋為具有八進制數值的字符。 在字符類的'['和']'內,所有數字轉義都被視為字符。

此外,根據之前鏈接的頁面,它不是一個bug而是一個期望的行為(這很明顯,因為它已被記錄)。

\\0被解釋為null \\x00的轉義\\x00 ,並且re不會將其識別為捕獲組。

參考:

Python標准庫文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM