//有如下字符串,获取其中的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个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯
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个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯