Python 正規表示式混亂:使用群組編號反向引用進行替換
當嘗試使用正規表示式將「foobar」替換為「foo123bar」時,你可能會遇到意想不到的結果。像 re.sub(r'(foo)', r'1123', 'foobar') 這樣的替換無法產生所需的輸出,而是傳回「J3bar」。
要理解這個問題,重要的是請注意組號反向引用和文字數字之間的區別。在這種情況下,1123 將「1123」視為文字字串,而不是對第一個捕獲組的引用。因此,替換無法如預期進行。
要實現正確的替換,您應該使用語法 g
re.sub(r'(foo)', r'\g<1>123', 'foobar')
在這種情況下,g捕獲與第一組匹配的子字串,即輸入中的字串「foo」。透過使用適當的組號反向引用,可以正確執行替換,從而得到輸出「foo123bar」。
Python 文件中對此行為進行了解釋,該文件描述了 g
以上是為什麼 `re.sub(r\'(foo)\', r\'\\1123\', \'foobar\')` 在 Python 正規表示式中不會產生 \"foo123bar\" ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!