2017-02-01 33 views
-3

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

对于简单的电子邮件,如[email protected],我已经完成了我从中获得域的代码部分。
但对于像[email protected](实际域名为ibm.com)的电子邮件,我无法获取域名。

String domainName = ""; 
String[] parts = email.split("@"); 
if(parts.length == 2) 
    domainName = parts[1]; 

如何拆分或执行正则表达式来获取域名?

回答

2

字符串#子()是罚款多,分裂产生白白数组....(一种资源的浪费......)

定义一个方法(被清洁走回头路...)

public String getEmailDomain(String someEmail) 
{ 
    return someEmail.substring(someEmail.indexOf("@") + 1); 
} 
+0

我会包括一个检查,如果有真正的@在那里。或者至少提到,如果缺少@,上面的结果会给出意想不到的结果。 – GhostCat

+0

感谢您反馈。当我使用它时,它给出@后的确切内容,但是我的要求。何时给[email protected]这样的电子邮件ID,它应该自动检查,并应该给出一个结果作为arronsw.com – ganeshmaax

0

你可以尝试以下

(?<[email protected])[^.]+(?=\.) 

这会给后面的域名只有没有尾随suffex如[email protected]将返回域

(?<[email protected])[a-zA-Z0-9\.]+(?<=) 

这会给后面的域名是后缀EE [email protected]将返回domain.com或[email protected]将返回192.168.0.1

解释它是如何工作的

? < =

后面

正面看@

字符@字面上(区分大小写)

匹配单个字符[A-ZA-Z0-9匹配。 ]

+

量词 - 一个和无限的时间之间较量,多次地,用之于根据需要(贪婪)

匹配该字符。字面(区分大小写)

?< =

背后

并没有提供一个值看身后空

正面看,假定其中,匹配任何位置

有关Java正则表达式的更多信息,请参阅 Tutorials Point

+0

域名是“@”后的所有内容,甚至可以是IP地址。您的解决方案从'name @ yahoo.com'获得'yahoo'并从'name @ 192.168.1.1'获取'192'' –

+0

将此电子邮件发送至[email protected]。确切的域名是aaronsw当使用这个分割它会给@后的所有内容。但是我的结果应该像aaronsw,com – ganeshmaax

+0

@Sergey是否可以为您和您拥有的所有案例工作? –

0

您可以通过正则表达式Pattern查看邮件并取子串:

String email = "[email protected]", domain; 
Pattern pattern = Pattern.compile(".+\\..+$"); 
Matcher matcher = pattern.matcher(email); 
if(matcher.find()) 
    domain = email.substring(matcher.start() + 1); 
else 
    domain = null; 
相关问题