2017-02-01 29 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; 
相關問題