2013-05-29 96 views
1

我想獲得像「[email protected]」的輸出,但它只顯示「com」作爲匹配的表達式。如何使用findall獲得完整的匹配表達式?findall模塊重新在python

>>> pat = re.compile('[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9][a-zA-Z0-9]*[.](com|co.in|org|edu)') 
>>> pat.findall('[email protected]') 
['com'] 
>>> pat.findall('[email protected] [email protected]') 
['com', 'org'] 

Required Output:- 
['[email protected]'] 
['[email protected]', '[email protected]'] 

回答

1

末捕獲僅在最後一組括號,即comorg

您正則表達式更改爲:

[a-zA-Z0-9][\w\.]{4}[\w\.]*@[a-zA-Z0-9]+[.](?:com|co\.in|org|edu) 
              ^^ 

這將確保沒有組匹配,從而使匹配字符串存儲,而不是僅僅分組的一部分。

此外,我不知道爲什麼你把所有這些逗號。我刪除了它們,正則表達式仍在工作。

+1

是不是要逃避「co.in」中的點也是必要的? – Dropout

+0

@Dropout正確地指出,謝謝:) – Jerry

+0

+1現在;)乾杯! – Dropout