游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1746|回复: 0

一个e-mail邮件地址的JAVA表达式WXH ZT

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-8-24 21:01:00 | 显示全部楼层 |阅读模式


有以下字符串,我要获取其中的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();
    }

这样就完成了需要的功能!其中关于正则表达式中值得注意的知识如下:

*表示匹配0个或多个字符,是贪婪的(Greedy),即尽可能多地匹配字符,.*表示尽可能多地匹配非\\r\\n的字符

*?称为是懒惰的星号,即尽可能少地匹配字符,马上会去检测后面的字符是否满足.*?后的模式,如果不满足,则回溯;一旦后面的字符串满足模式abc,则马上停止了

*+不知道,倒是有 + 和 +?。+表示匹配1个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 04:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表