Java 使用正则表达式从文件中解析出所有email地址
import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
/**
* 提取邮件地址
* @author Roger Federer
* @date 2013-10-16 下午13:27:00
*/
public class EmailParser {
private final static Pattern emailer = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//String txt = FileUtils.readFileToString(new File(args[0]));
String txt = "test@sina.comtest@sina.com test@sina.com test1@sina.com test@sina.com xxxx@sina.com,test@sina.com";
//System.out.println(txt);
Matcher matchr = emailer.matcher(txt);
while (matchr.find()) {
String email = matchr.group();
System.out.println(email);
}
Matcher matcher = emailer.matcher(txt);
String matchecText = null;
int matchedFrom = 0;
int matchedTo = 0;
while (matcher.find()) {
matchecText = matcher.group();
matchedFrom = matcher.start();
matchedTo = matcher.end();
System.out.println("matched [" + matchecText + "] from [" + matchedFrom + "] to [" + matchedTo + "]" );
}
}
}
运行结果:
test@sina.comtest
test@sina.com
test1@sina.com
test@sina.com
xxxx@sina.com
test@sina.com
matched [test@sina.comtest] from [0] to [17]
matched [test@sina.com] from [27] to [40]
matched [test1@sina.com] from [41] to [55]
matched [test@sina.com] from [56] to [69]
matched [xxxx@sina.com] from [70] to [83]
matched [test@sina.com] from [84] to [97]