用JAVA實現的截取e-mail郵件地址
來源:互聯網
上載者:User
//有如下字串,擷取其中的E-MAIL地址:
String emailmessage=<qdragon@126.com>Q龍,龍少<longshao@126.com>;嘿嘿<eee@www.com>;
//最終要的輸出為:
qdragon@126.com,longshao@126.com,eee@www.com
編程方法如下:
public static String escpMailAddress(String str)
{
if (str==null || str.length()==0)
return null;
//得到處理後的email地址,地址規則: <qdragon@abc.com>中文,<qdragon@abc.com>中文
Pattern patter = Pattern.compile(<(.*?)>); //?是最小匹配
Matcher mather = patter.matcher(str);
boolean result = false;
StringBuffer sb = new StringBuffer();
int start,end;
//迴圈找到E-MAIL地址
for(;;)
{
result = mather.find();
if (!result)
break;
start = mather.start();
end = mather.end();
sb.append(str.substring(start, end).replaceAll(<*>*,)+,);
}
return sb.toString();
}
這樣就完成了需要的功能!其中關於Regex中值得注意的知識如下:
*表示匹配0個或多個字元,是貪婪的(Greedy),即儘可能多地匹配字元,.*表示儘可能多地匹配非\\r\\n的字元
*?稱為是懶惰的星號,即儘可能少地匹配字元,馬上會去檢測後面的字元是否滿足.*?後的模式,如果不滿足,則回溯;一旦後面的字串滿足模式abc,則馬上停止了
*+不知道,倒是有 + 和 +?。+表示匹配1個或多個字元,是貪婪的;+?是懶惰的,在匹配一個字元之後會去檢測後面的字元是否滿足.+?後的模式,如果不滿足,則回溯