随笔-60  评论-35  文章-15  trackbacks-0
有以下字符串,我要获取其中的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个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯

posted on 2006-08-18 22:37 Q系列类、方法、变量…… 阅读(1343) 评论(1)  编辑  收藏

评论:
# re: 一个e-mail邮件地址的JAVA表达式 2007-06-14 11:53 | 苏纯
是,六十六  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: