You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hive中从字符串提取完整email地址 regexp_extract正则问题

Hive提取完整邮箱正则调整方案

问题原因

你当前使用的正则@(.*)仅从@符号开始匹配,因此只能返回@及后续的域名部分,无法覆盖@前面的邮箱用户名。

正确正则规则

完整邮箱的匹配逻辑为:

  • 用户名部分:可包含大小写字母、数字、下划线、小数点、中划线,至少1个字符
  • 固定分隔符@
  • 域名部分:由域名前缀、小数点、顶级域名组成,域名前缀规则同用户名,顶级域名至少2位字母

适配Hive的正则写法为:[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z]{2,}

注意:Hive中反斜杠需要二次转义,因此匹配小数点的\.要写为\\.

调整后SQL语句

Select regexp_extract('my email address is xxxxxx@gmail.com', '[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z]{2,}', 0);

执行后返回结果为:xxxxxx@gmail.com

补充说明

regexp_extract的第三个参数为0时返回整个正则匹配到的完整内容,若你后续需要单独提取邮箱用户名或域名,可将对应规则用括号包裹,修改第三个参数为对应分组序号即可。

内容的提问来源于stack exchange,提问作者Rajat Arora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:24:05