Ruby Regex 从电子邮件地址中提取域

Posted

技术标签:

【中文标题】Ruby Regex 从电子邮件地址中提取域【英文标题】:Ruby Regex to extract domain from email address 【发布时间】:2014-05-26 15:44:30 【问题描述】:

我以前没有使用过正则表达式的真正经验,只是说。 我想从以下格式的电子邮件地址中提取域名。

richardc@mydomain.com 这样正则表达式只返回:mydomain

如果可能的话,解释它是如何/为什么起作用的! 干杯

【问题讨论】:

"richardc@mydomain.com".split('@')[1].split('.')[0] 【参考方案1】:

这里捕获(...)\1 中的域名,并将整个字符串替换为该捕获,这仅在末尾产生域名。

email = 'richardc@mydomain.com'
domain = email.gsub(/.+@([^.]+).+/, '\1')
# => mydomain

.+ 表示任何字符(\n 除外)。所以它基本上匹配整个电子邮件字符串,并使用([^.]+)捕获域名[除了点之外的任何东西]

【讨论】:

我添加了更多信息。此外,您可以使用此链接regex101.com 来获得更多关于您的正则表达式的解释。【参考方案2】:

如果您想采用解析路线,mail gem 将完成这项工作:

Mail::Address.new("richardc@mydomain.com").domain

【讨论】:

以上是关于Ruby Regex 从电子邮件地址中提取域的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本 - 将 gmail 中的数据提取到电子表格中

Python正则表达式,在地址中查找电子邮件域

从 Outlook 电子邮件中提取嵌入的图像

从分号分隔的电子邮件向量中提取具有特定域的电子邮件

如何从 textarea 字段中提取电子邮件 ID

从sql中的字符串中提取电子邮件域