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

如何在PostgreSQL中提取邮箱最后一个@字符前的部分?

提取邮箱地址中最后一个@字符之前的部分

嘿,这个需求其实挺常见的——要抓取邮箱里最后一个@前面的内容,不用搞复杂的正则,用语言自带的字符串处理方法就搞定了,我给你几个常用场景下的实现方案:

Python 实现

思路很简单:先找到最后一个@的位置,再截取从开头到这个位置的字符串就行。Python里用rfind()方法就能快速定位最后一个@的索引:

email = "ex@mpleEm@il@mymail.com"
last_at_pos = email.rfind('@')
# 处理没有@的边缘情况,避免报错
result = email[:last_at_pos] if last_at_pos != -1 else email
print(result)  # 输出: ex@mpleEm@il

rfind()会返回字符最后一次出现的索引,如果邮箱里没有@,就返回-1,这时候直接返回原邮箱字符串就好。

JavaScript 实现

和Python思路一致,用lastIndexOf()定位最后一个@,再用slice()截取:

const email = "ex@mpleEm@il@mymail.com";
const lastAtPos = email.lastIndexOf('@');
const result = lastAtPos !== -1 ? email.slice(0, lastAtPos) : email;
console.log(result); // 输出: ex@mpleEm@il

同样考虑了没有@的情况,确保代码健壮性。

Shell(Bash)实现

如果是在命令行环境下处理,Bash的参数扩展语法就能轻松搞定,不用写复杂脚本:

email="ex@mpleEm@il@mymail.com"
result="${email%@*}"
echo $result # 输出: ex@mpleEm@il

这里的%@*是Bash的后缀删除语法:匹配最后一个@及其后面的所有内容并删掉,剩下的就是我们要的部分。如果邮箱里没有@,这个语法会直接返回原字符串,非常省心。

内容的提问来源于stack exchange,提问作者Joshua Rajandiran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:18:04