java怎么通过正则表达式提取一个文件里面的所有邮箱?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么通过正则表达式提取一个文件里面的所有邮箱?相关的知识,希望对你有一定的参考价值。

package org.com.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class ReadTxt

static int NUM = 231;
static String[] value = new String[NUM];

public static List<String> listFriends(File file) throws InterruptedException
List<String> listFriends = new ArrayList<String>();
int n =0;
try
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null)
for (int i = 0; i < NUM; i++)
int beginIndex = line.indexOf(" n=");
int endIndex = line.indexOf(".com");
if(beginIndex>endIndex)
System.out.println("you are wrong!!!!!!");
n=n+1;
// Thread.sleep(3000);
break;

if(beginIndex>-1&&endIndex>-1)
value[i] = line.substring(beginIndex, endIndex);
value[i] = value[i].replaceAll("n=", "<!--");
value[i] = value[i]
.replaceAll("e=", "--><email><receiver>");
value[i] = value[i].replaceAll("\"", "");
listFriends.add(value[i] + "@qq.com</receiver></email>");
// line = line.substring(endIndex * 2 - beginIndex + 2);
break;

else
System.out.println("please go on!!!!!!");
// Thread.sleep(3000);
break;




reader.close();
catch (FileNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

listFriends = removeDuplicateObj(listFriends);
System.out.println(n);
return listFriends;



public static List<String> removeDuplicateObj(List<String> list)
Set<String> someSet = new LinkedHashSet<String>(list);
Iterator<String> iterator = someSet.iterator();
List<String> tempList = new ArrayList<String>();
int i = 0;
while (iterator.hasNext())
tempList.add(iterator.next().toString());
i++;

return tempList;


public static void main(String[] args) throws InterruptedException
// TODO Auto-generated method stub
File file = new File(
"C:\\Documents and Settings\\Administrator\\桌面\\tttttttttttttttttt.txt");
List<String> listFriends = new ArrayList<String>();
listFriends = listFriends(file);
for (String str : listFriends)
System.out.println(str);

System.out.println(listFriends.size());


参考技术A BufferedReader bufferedReader = null;
try
bufferedReader = new BufferedReader(new FileReader("H:\\\\emailtest.txt"));
try
while((bufferedReader.readLine())!=null)

//System.out.println(line);
Parseemail(line);

catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

catch (FileNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();

finally
try
bufferedReader.close();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


public static void Parseemail(String line)

BufferedWriter bufferedWriter = null;
try
bufferedWriter = new BufferedWriter(new FileWriter("H:\\\\reslut.java"));
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

Pattern pattern = Pattern.compile("[\\\\w[.-]]+\\\\@[\\\\w[.-]]2,\\\\.[\\\\w[.-]]+");
Matcher matcher = pattern.matcher(line);
while(matcher.find())

System.out.println(matcher.group());
String string = new String(matcher.group());
string += "\\n";
try
bufferedWriter.newLine();
bufferedWriter.write(string, 0, string.length());
bufferedWriter.flush();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


try
bufferedWriter.close();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

本回答被提问者采纳
参考技术B 文件内容读成一个字符串

Pattern p=Pattern.compile("[\w]+@[\w]+\.[com|net|cn]");
Matcher m=p.matcher(文件内容);
while(m.find())
vfp = m.group();
System.out.println(vfp)://打印所有邮箱

参考技术C 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]+");
/**
 * @param args
 * @throws IOException
 */
public static void main(String[] args) throws IOException 
String txt = FileUtils.readFileToString(new File("你的文件"));
Matcher matchr = emailer.matcher(txt);
while (matchr.find()) 
String email = matchr.group();
System.out.println(email);



参考技术D Pattern p = Pattern.compile("[_/.0-9a-z-]+@([0-9a-z][0-9a-z-]+/.)+[a-z]2,3");
Matcher m = p.matcher(builderStr);
while (m.find())
System.out.println(m.group());

java 正则表达式 提取IP

我有一个文本文档里面很多IP地址
我想用java的正则表达式把ip都找出来
最好 还能过滤重复的
218.98.195.19:554@HTTP$6&30,661,691#山东省济南市 百灵宽带
218.93.113.58:3128@HTTP$6&310,951,951#江苏省常州市 电信ADSL
222.243.200.107:8080@HTTP$6&330,941,1873#湖南省永州市 电信
218.247.131.195:8080@HTTP$6&311,972,1262#北京市 方正宽带
221.2.96.198:3128@HTTP$6&481,1322,1372#山东省临沂市 网通
211.140.192.98:8080@HTTP$6&221,1192,1192#辽宁省大连市 移动
58.216.235.242:3128@HTTP$6&250,1061,1061#江苏省 电信
221.8.56.106:3129@HTTP$6&101,1312,1312#吉林省长春市 网通ADSL
218.7.48.22:8080@HTTP$6&121,1643,1643#黑龙江省齐齐哈尔市龙沙区 天天网吧

分析一下IP地址组成:数字和“.”
那么正则可以这样写:[0-9.]+
根据你的补充,那么IP可以这样写:[0-9.:]+@,这个是包括端口号的情况
如果不要端口号,可以这样写[0-9.]+:
Java我没学过,但正则表达式大体是通用的。

至于如此长段文本里去重,个人觉得纯以正则表达式不行,还得配合程序。由于我不是java程序员,不好解释。不过,你可以用反复比较文本的方式还解决。
比如ip:218.98.195.19,估计java里也应该有indexOf之类的方法,查找出,然后过滤。
仅作参考用。
参考技术A 文档内容示例

以上是关于java怎么通过正则表达式提取一个文件里面的所有邮箱?的主要内容,如果未能解决你的问题,请参考以下文章

请大家帮帮忙. 使用java爬虫得到网页以后怎么提取里面自己需要的内容呢?如果会代码请您写一下.谢谢您

jquery 怎么用正则提取字符串里面的内容?

java 正则表达式 提取IP

用java 正则表达式 提取IP地址

帮你快速拿Offer!正则表达式java提取括号里面的数

ultraedit/UE/Ultra Studio里面, 如何将正则表达式匹配到的所有字符串结果(不是所在行)提取出来?