在网上看了一篇文章是关于提示email的,看了以后觉得作者的正则表达式有些问题,所以自己就修改了一下,源码如下:
- package com.sucre.api.test;
- /**
- * 提取邮件地址
- * @author 乔磊
- * @version create time:2011-1-7 上午10:55:05
- *
- */
- import java.io.File;
- import java.io.IOException;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import org.apache.commons.io.FileUtils;
- public class EmailParser {
- private final static Pattern emailer = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
- public static void main(String[] args) throws IOException {
- String txt = FileUtils.readFileToString(new File(args[0]));
- Matcher matchr = emailer.matcher(txt);
- while (matchr.find()) {
- String email = matchr.group();
- System.out.println(email);
- }
- }
- }
作者先前的正则表达式是这样的
- private final static Pattern emailer = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
这样在提取的时候会把aa@.com这样形式的email也提取出来的,所以是不正确的。
转载于:https://blog.51cto.com/sucre/473736