捕獲組匹配

2021-08-10 10:04:30 字數 1191 閱讀 3108

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 這樣的可巢狀的層次性結構,這時簡單地使用 則只會匹配到最左邊的左括號和最右邊的右括號之間的內容 這裡我們討論的是貪婪模式,懶惰模式也...