2014-02-23 89 views
0

的行爲,我有這個海峽名單奇怪的正則表達式

l=['Cu_3', 'P_2', 'O_8'] 

和這兩正則表達式

import re 
sub = re.compile('_([0-9])')  
sub2 = re.compile('._([0-9])') 

子不匹配列表中的任何elemetn,而SUB2匹配的最後兩個而不是第一個.. 我可能錯過了一些東西,但我期望在他們兩人的下劃線後面捕獲數字。這裏有什麼問題?

+3

您沒有在代碼中進行匹配。最佳猜測:你使用're.match'而不是're.search'。 – DSM

回答

4

問題是,您正在使用match()方法而不是search()方法,所以您的正則表達式被錨定在字符串的開頭。

+0

你該死的權利,我不知道有關re.match(),thx很多! – woggio

+0

如果他使用'match',那麼'Cu_3'不應該匹配,因爲'._([0-9])'只是行首的任何字符之一。好偵探工作壽! +1 – dawg

+0

其實Cu_3不匹配.. – woggio