2015-03-31 54 views
0

我想執行操作就像來自兩個 選擇任何一個合適的組如:正則表達式匹配一個由兩組

gmail.com|gmail.co.in 

這給了我直接結果,但我怎麼能寫正則表達式蟒蛇爲以上情況映射電子郵件ID。 注意。我只是想點或最大兩組點和2個字符後,地圖3字符

我試着寫正則表達式爲:

[\w]+\.?[\w]{3}|[[\w]{2}\.?]{2} 

但不會給我預期的結果

如果試圖用( )返回組,例如:[email protected]將返回gmail.com,但需要檢索整個電子郵件地址。

+0

''[[\ w] {2} \。?]'你在這裏做什麼?這裏'[[\ w]'是一個包含'['和'\ w'的字符類,最後一個']'匹配字符']'。 – Maroun 2015-03-31 09:23:44

+0

你是什麼。我只是想分兩組。我的意思是[\ w]和\。將這兩個組合爲一個重複。但不知道如何去做 – Pooja 2015-03-31 09:25:38

+1

'('和')'用於分組,而不是'['和']'。 – Maroun 2015-03-31 09:26:11

回答

2

您可以使用以下正則表達式:

\[email protected]\w+\.((\w{3})|(\w{2}\.\w{2})) 

Demo

所有你需要在這裏的就是把第一部分爲\[email protected]\w+\.,那麼你只需要分組玩,pipe.so以下模式:

((\w{3})|(\w{2}\.\w{2})) 

將匹配的字符串包含是指具有2個字字符第一個串3字字符或(\w{2}\.\w{2})然後用2個單詞字符輸入字符串。

+0

對於這個正則表達式,如果輸入爲[email protected],則輸出爲[('com','com','')]而不是[[email protected]]。我不希望[com,com]作爲輸出,因爲它會影響我的其餘代碼 – Pooja 2015-03-31 09:35:24

+0

@天使因爲「@」不是一個單詞字符,而您的第一個示例不包含「@」,請檢查編輯 – Kasramvd 2015-03-31 09:37:04

+0

我有((\ w {3})|(\ w {2} \。\ w {2})) – Pooja 2015-03-31 09:41:02

0

希望這會有所幫助。

>>> import re 
>>> y = re.search('(?P<user>\w+)@(?P<domain>[\w.]+)', '[email protected]') 
>>> print y.group("user"), y.group("domain") 
abc gmail.com 
>>> y = re.search('(?P<user>\w+)@(?P<domain>[\w.]+)', '[email protected]') 
>>> print y.group("user"), y.group("domain") 
abc gmail.co.in 
>>> 
0

我希望這可以幫助你。

email = '[email protected]' 
user = email.split('@')[0] 
domain = email.split('@')[1]