2015-01-12 63 views
0

的Python 3Python的正則表達式字符類

我最近開始讀regex,並考慮以下情況:

如果輸入後跟CDAB我想EF

來代替它

因此,我的char class[CD],它應該是non-capturing

使用re.sub我想出如下:

re.sub(r'AB(?:[CD])','EF',text) 

當我輸入ABCZ運行這段代碼我得到EFZ

謝謝!

回答

3

非捕獲並不意味着它不包含在比賽中。這僅表示它不是作爲一個組捕獲的(因此您不能使用反向引用,如\1來引用它)。

如果要指定[CD]應該遵循,但不包括在比賽中,你需要使用一個前瞻:

>>> re.sub(r'AB(?=[CD])','EF','ABCZ') 
'EFCZ'