我有一些電子郵件使用正則表達式排除字符串?
[email protected]
[email protected]
[email protected]
我需要忽略包含info, sales
字符串,所以我用的模式:
'/(?!spb)[a-zA-Z0-9-_\.][email protected][a-z0-9\.]+$'
但它返回[]
。我究竟做錯了什麼?
我有一些電子郵件使用正則表達式排除字符串?
[email protected]
[email protected]
[email protected]
我需要忽略包含info, sales
字符串,所以我用的模式:
'/(?!spb)[a-zA-Z0-9-_\.][email protected][a-z0-9\.]+$'
但它返回[]
。我究竟做錯了什麼?
https://regex101.com/r/505NB9/1它看起來像前兩個字符是不需要的。
我覺得沒有。因爲它燈串,不符合模式 –
是的抱歉,我不明白這個問題。儘管你可以避免使用正則表達式: 'email.split'('@')[0]或email.split('@')'sales'中的'if'info':' – Kroustou
看到我下面的工作示例。
^
以指示行的開始。[]
的原因可能是您沒有使用re.MULTILINE選項。 re.MULTILINE標誌告訴python使'^'和'$'特殊字符匹配字符串中任何行的開始或結束,而不是整個字符串的開始或結束。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]']
也許更易懂,易維護:根據需要
import re
string = """
[email protected]
[email protected]
[email protected]
some other text here with emails [email protected] included"""
rx = re.compile(r'\[email protected]\S+')
def ignore(value):
lst = ['info', 'sales']
for i in lst:
if i in value:
return False
return True
emails = filter(ignore, rx.findall(string))
print(emails)
# ['[email protected]', '[email protected]']
簡單地調整ignore()
的lst
。
向我們展示您嘗試使用的代碼。你想排除他們什麼?一個列表,一個字典,一組? –
@AustinHastings我在我的問題中指定了這些數據。我試圖用電子郵件在樣本中測試。爲此,我使用'emails = re.findall(pattern,test)' –
https://regex101.com/r/505NB9/3 – JazZ