Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式排除特定电子邮件地址_Python_Regex_Email - Fatal编程技术网

Python 使用正则表达式排除特定电子邮件地址

Python 使用正则表达式排除特定电子邮件地址,python,regex,email,Python,Regex,Email,我有一个用于提取电子邮件的正则表达式,可以很好地工作: ([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]) 但是,有些电子邮件我不想包括,例如: server@example.com noreply@example.com name@example.com 我一直在尝试添加^(?!server | noreplay | name)之类的内容,但没有效果 同样,如

我有一个用于提取电子邮件的正则表达式,可以很好地工作:

([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])
但是,有些电子邮件我不想包括,例如:

server@example.com
noreply@example.com
name@example.com
我一直在尝试添加^(?!server | noreplay | name)之类的内容,但没有效果


同样,如上所述,使用括号将产生一个带有(名称、域)的元组。

在提取这些电子邮件地址后,只需检查它们

bad_addresses=['server@example.com', 'noreply@example.com', 'name@example.com']
emails=re.findall('[a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]', contentwithemails)

for item in emails[:]:
  if item in bad_addresses:
    emails.remove(item)

你必须做一段电子邮件(
emails[:]
),因为你不能在不断变化大小的列表上做for循环。这将创建一个“重影”列表,在对真实列表执行操作时可以读取该列表。

检查正则表达式的结果,以查找与坏电子邮件列表匹配的任何电子邮件

results = list_from_your_regex
invalids = ['info', 'server', 'noreply', ...]
valid_emails = [good for good in results if good.split('@')[0] not in invalids]

只需在使用正则表达式检查之前/之后检查禁止的地址。不需要正则表达式。第二个@Czechnology。。。我认为你不应该试图在你当前的正则表达式中强制使用类似的东西——最好有第二个单独的正则表达式来测试那些电子邮件,因为你原来的正则表达式无法识别许多有效的电子邮件地址。例如,任何带有注释段的电子邮件或任何带有“+”字符的用户名都将不匹配,尽管它们是有效地址。请参阅@dbenhur mmm有趣的,我将检查这些示例。谢谢