用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個或多個字元,是貪婪的;+?是懶惰的,在匹配一個字元之後會去檢測後面的字元是否滿足.+?後的模式,如果不滿足,則回溯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.