re.sub在替換替換字串中可以使用組號,在替換內容中以「\n「形式出現的轉移序列都會被模式中與組n匹配的字元替換掉。
對於模式「000-(2017)-(11)-(06)「
組0 : 000-2017-11-06
組1 : 2017
組2 : 11
組3 : 06
>>> example = "(\d)-(\d)-(\d)"
>>> ex=re.compile(example)
>>> text = "000-2017-11-06"
1、保留年,替換月份和日期
#'\\1-99'相當於'2017-99'
>>> ex.sub('\\1-99',text)
'000-2017-99'
相當於用「2017-99替換2017-11-06「
2、保留年、月份,替換日期
>>> ex.sub('\\1-\\2-99',text)
'000-2017-11-99'
『\1-\2-99』相當於』2017-11-99』
2、保留年、月份、日期
>>> ex.sub('\\1-\\2-\\3',text)
'000-2017-11-06'
不僅在替換內容中適用,在正規表示式中同樣適用
>>> re.sub('([ab])\\1','x','abcdebbcde')
'abcdexcde'
對於正規表示式 『([ab])\1』
組1 : [ab]
解釋:
對於正規表示式「([ab])\1」,捕獲組中的子表示式「[ab]」雖然可以匹配「a」或者「b」,但是捕獲組一旦匹配成功,反向引用的內容也就確定了。如果捕獲組匹配到「a」,那麼反向引用也就只能匹配「a」,同理,如果捕獲組匹配到的是「b」,那麼反向引用也就只能匹配「b」。由於後面反向引用「\1」的限制,要求必須是兩個相同的字元,在這裡也就是「aa」或者「bb」才能匹配成功。
所以 『([ab])\1』 相當於』 (aa|bb)』
>>> re.sub('(aa|bb)','x','abcdebbcde')
'abcdexcde'
mysql 正則匹配 捕獲組 正規表示式 捕獲組
大綱 語法實戰 反向引用 替換 一 語法 捕獲組 匹配子表示式內容,匹配結果以編號或顯示命名的方式存在記憶體,可供正則本身,也可供替換使用。語法 數字編號 pattern 匹配結果儲存為數字。顯示命名 pattern 匹配結果儲存到變數name中。非捕獲 pattern 標識不需要儲存的組。二 實戰...
正規表示式之捕獲組 非捕獲組
語法 字元 描述 示例 pattern 匹配pattern並捕獲結果,自動設定組號。abc d 匹配abcd或者abcabcd pattern 或 name pattern 匹配pattern並捕獲結果,設定name為組名。num 對捕獲組的反向引用。其中 num 是乙個正整數。w w 2 1 匹配...
匹配平衡組 , 匹配括號組
這裡介紹的平衡組語法是由.net framework支援的 其它語言 庫不一定支援這種功能,或者支援此功能但需要使用不同的語法。有時我們需要匹配像 100 50 15 這樣的可巢狀的層次性結構,這時簡單地使用 則只會匹配到最左邊的左括號和最右邊的右括號之間的內容 這裡我們討論的是貪婪模式,懶惰模式也...