2017-02-04 87 views
2

我有一些電子郵件使用正則表達式排除字符串?

[email protected] 
[email protected] 
[email protected] 

我需要忽略包含info, sales字符串,所以我用的模式:

'/(?!spb)[a-zA-Z0-9-_\.][email protected][a-z0-9\.]+$' 

但它返回[]。我究竟做錯了什麼?

+3

向我們展示您嘗試使用的代碼。你想排除他們什麼?一個列表,一個字典,一組? –

+0

@AustinHastings我在我的問題中指定了這些數據。我試圖用電子郵件在樣本中測試。爲此,我使用'emails = re.findall(pattern,test)' –

+0

https://regex101.com/r/505NB9/3 – JazZ

回答

0

https://regex101.com/r/505NB9/1它看起來像前兩個字符是不需要的。

+0

我覺得沒有。因爲它燈串,不符合模式 –

+0

是的抱歉,我不明白這個問題。儘管你可以避免使用正則表達式: 'email.split'('@')[0]或email.split('@')'sales'中的'if'info':' – Kroustou

0

看到我下面的工作示例。

  • 爲使您的代碼正常工作,您還需要包含^以指示行的開始。
  • 您得到[]的原因可能是您沒有使用re.MULTILINE選項。 re.MULTILINE標誌告訴python使'^'和'$'特殊字符匹配字符串中任何行的開始或結束,而不是整個字符串的開始或結束。

Visual representation of the required regular expression

import re 

test = '[email protected]\[email protected]\[email protected]' 
print(test) 

[email protected] 
[email protected] 
[email protected] 

pattern = re.compile('^(?!info|sales)[[a-zA-Z0-9-_.][email protected][a-z0-9.]+$', re.MULTILINE) 
emails = re.findall(pattern, test) 
print(emails) 

['[email protected]']