Java 从电子邮件列表中获取域名

Java 从电子邮件列表中获取域名,java,Java,从电子邮件列表中获取域名 嗨,我有一个电子邮件id列表,我必须从中获取域名 对于像sample@example.com,我已经完成了获取域的代码部分。 但是对于像hello@in.ibm.com(实际域名是ibm.com),我无法获取该域名 String domainName = ""; String[] parts = email.split("@"); if(parts.length == 2) domainName = parts[1]; 如何拆分或使用正则表达式获取域名?字符

从电子邮件列表中获取域名
嗨,我有一个电子邮件id列表,我必须从中获取域名

对于像
sample@example.com
,我已经完成了获取域的代码部分。
但是对于像
hello@in.ibm.com
(实际域名是
ibm.com
),我无法获取该域名

String domainName = "";
String[] parts = email.split("@");
if(parts.length == 2) 
    domainName = parts[1];
如何拆分或使用正则表达式获取域名?

字符串#substring()非常好,拆分是免费生成数组……(有点浪费资源…)

定义一个方法(cleaner是这样做的吗…)


你可以试试下面的方法

(?<=@)[^.]+(?=\.)

(?如果有人还在想怎么做,这里有另一种方法,它支持不带“@”字符的输入字符串:

private Optional<String> extractEmailDomain(String emailAddress) {
    int atIdx = emailAddress.indexOf("@");
    if (atIdx > 0) {
        return Optional.of(emailAddress.substring(atIdx + 1));
    }

    return Optional.empty();
}
私有可选extractEmailDomain(字符串emailAddress){
int atIdx=emailAddress.indexOf(“@”);
如果(atIdx>0){
返回可选的.of(emailAddress.substring(atIdx+1));
}
返回可选的.empty();
}

域名是
@
之后的所有内容,甚至可以是IP地址。您的解决方案可以从
name@yahoo.com
192
来自
name@192.168.1.1
接受这封电子邮件me@in.aaronsw.com.当使用此拆分时,确切的域是aaronsw,它将在@之后提供所有内容。但我的结果应该像aaronsw一样,com@Sergey这个解决方案对你和你所有的案例都有效吗?我会检查里面是否真的有一个@。或者至少提到如果@缺失,上面会给出意外的结果。谢谢你的反馈。当我使用它时,它会给出@之后的确切内容,但我的要求是。什么时候是g我喜欢电子邮件me@in.aaronsw.com它应该会自动检查并给出一个结果,结果为arronsw.com“\”very.uncilar.@.uncilar.com\”@command.com”,但失败。
(?<=@)[a-zA-Z0-9\.]+(?<=)
private Optional<String> extractEmailDomain(String emailAddress) {
    int atIdx = emailAddress.indexOf("@");
    if (atIdx > 0) {
        return Optional.of(emailAddress.substring(atIdx + 1));
    }

    return Optional.empty();
}