首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python regex提取电子邮件域

使用Python regex提取电子邮件域
EN

Stack Overflow用户
提问于 2018-06-26 02:24:05
回答 2查看 2.6K关注 0票数 2

我正在尝试从电子邮件地址中提取域名

 domain = re.search('(@^\S$)', email)

我想匹配除换行符以外的任何非空格字符。但是,我的变量没有返回任何内容,请在下面对我的过程提出建议:

  • (@表示字符串在@ symbol
  • ^\S之后或在@ @
  • $)之后重复任何非空格字符表示排除/n或换行符并在此处结束
EN

回答 2

Stack Overflow用户

发布于 2018-06-26 02:50:09

当前的正则表达式匹配@,后跟行首,后跟一个非空格字符,最后是输入。(我假设您已经在实际代码中正确地转义了字符串的反斜杠。)

您要做的是匹配@之后的位置,然后是任意数量的非空格字符,然后是输入的末尾:

domain = re.search(r"(?<=@)(\S+$)", email)

在这里,(?<=@)是一个后视器,它测试前面的一个或多个字符是否与括号中的内容匹配;\S+是否与一个或多个非空格字符匹配;$是否与行尾匹配。

另一个不需要正则表达式的选项是:

domain = email.split("@")[1]
票数 2
EN

Stack Overflow用户

发布于 2018-06-26 03:04:00

^元字符与字符串的开头匹配,因此将其放在模式开头以外的任何位置都不会匹配任何内容。

此外,\S将匹配不需要的字符,相反,我们可以查看specifications for domain name以准确匹配所需的字符。

最后,您可以使用捕获组来捕获域并丢弃@

import re

email = 'foo@stackoverflow.com'

domain = re.search('@((\w|\w[\w\-]*?\w)\.\w+)', email).group(1)

print(domain) # stackoverflow.com
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51029753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档