在网上看了一篇文章是关于提示email的,看了以后觉得作者的正则表达式有些问题,所以自己就修改了一下,源码如下:
- package com.sucre.api.test;
-
-
-
-
-
-
-
-
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也提取出来的,所以是不正确的。
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/473736,如需转载请自行联系原作者