利用正则表达式读取txt文件中的邮箱,电话号码,url地址,手机号,将数据一行一个保存到一个新的文件中去
本人最近整合了从文本中提取信息,将之保存的新的文本中,在此处用到的是正则表达式,希望大家一起学习.
文件操作类:fileOperation.java
package dyx_13;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class fileOperation {
// 创建文件,检测文件是否创建
public boolean crateFile(File fileName) {
boolean flag = false;
try {
if(!fileName.exists()) {
fileName.createNewFile();// 文件没有出现创建新文件
flag = true;
}
}catch(Exception e) {
e.printStackTrace();
}
return true;
}
// 读取txt文件
public static String readTxtFile(File fileName) {
StringBuffer str = new StringBuffer();
String result = null;
FileReader fileReader = null;// 读取文件
BufferedReader bufferReader = null;// 读取缓冲流
try {
fileReader = new FileReader(fileName);
bufferReader = new BufferedReader(fileReader);
try {
for(String line;(line = bufferReader.readLine())!=null;) {
str.append(line).append("\n");
}
result = str.toString();
}catch(Exception e) {
e.printStackTrace();
}
}catch(Exception e) {
e.printStackTrace();
}
//System.out.println("读出来的内容是:"+ result);
return result;
}
// 判定文件权限
public boolean writeTxtFile(String content, File fileName) {
//RandomAccessFile mm = null;
boolean flag = false;
FileOutputStream o = null;
try{
o = new FileOutputStream(fileName);// 文件要输出
o.write(content.getBytes("GBK"));
o.close();
flag = true;
}catch(Exception e) {
e.printStackTrace();
}
return flag;
}
// 写入文件
public static void write(String filePath, String content) throws IOException {
File file2 = new File(filePath);//取得文件路径
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file2, true)));
out.write(content+"\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 清空文本信息
public static void clear(String path) throws IOException {
File f = new File(path);
FileWriter fw = new FileWriter(f);
fw.write("");
fw.close();
}
public static void contentToTxt(String filePath1, String filePath2) {
StringBuffer str = new StringBuffer(); // 原有TXT文件
String s1 = new String();// 新加入的内容
try {
File file1 = new File(filePath1);//取得文件路径
if(file1.exists()) {
System.out.println("源文件存在");
} else {
System.out.println("源文件不存在");
file1.createNewFile();// 不存在创建文件
}
File file2 = new File(filePath2);//取得文件路径
if(file2.exists()) {
System.out.println("目标文件存在");
} else {
System.out.println("目标文件不存在");
file1.createNewFile();// 不存在创建文件
}
BufferedReader input = new BufferedReader(new FileReader(file1));
for(String line;(line = input.readLine())!=null;) {
str.append(line).append("\n");
}
s1 = str.toString();
// String emailStr = regExp.email(s1);
// String teleStr = regExp.tele(s1);
// String netAddStr = regExp.netAddress(s1);
// String idStr = regExp.idCard(s1);
// System.out.println(s1);
input.close();
BufferedWriter output = new BufferedWriter(new FileWriter(file2));
// output.write(emailStr);
// output.write(teleStr+"\n");
// output.write(netAddStr+"\n");
// output.write(idStr+"\n");
output.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
正则表达式处理:regExp.java
package dyx_13;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regExp {
public static String email(String filePath,String content) throws IOException {
String regex = "\\w+@\\w+(\\.\\w+)+";
String email = null;
Matcher m=Pattern.compile(regex).matcher(content);
while(m.find()){
email = m.group();
fileOperation.write(filePath, email);
System.out.println(email);
}
return email;
}
// 电话号码
public static String tele(String filePath,String content) throws IOException {
String telephone = null;
String regex = "0?(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}";
Matcher m=Pattern.compile(regex).matcher(content);
while(m.find()){
telephone = m.group();
fileOperation.write(filePath, telephone);
System.out.println(telephone);
}
return telephone;
}
// 网址
public static String netAddress(String filePath,String content) throws IOException {
String netAdd = null;
String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]" ;
Matcher m=Pattern.compile(regex).matcher(content);
while(m.find()){
netAdd = m.group();
fileOperation.write(filePath, netAdd);
System.out.println(netAdd);
}
return netAdd;
}
// 身份证
public static String idCard(String filePath,String content) throws IOException {
String id = null;
String regex = "(\\d{14}\\w)|\\d{17}\\w" ;
Matcher m=Pattern.compile(regex).matcher(content);
while(m.find()){
id = m.group();
fileOperation.write(filePath, id);
System.out.println(id);
}
return id;
}
}
运行主程序zhu.java
package dyx_13;
import java.io.File;
import java.io.IOException;
public class zhu {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//o.contentToTxt(s1, s2);fileOperation o = new fileOperation();
String s1 = "D:\\java workspace\\dyx\\JAVA class\\dyx_2\\content\\file.txt";
String s2 = "D:\\java workspace\\dyx\\JAVA class\\dyx_2\\content\\outfile.txt";
fileOperation.clear(s2);
File f = new File(s1);
String s = fileOperation.readTxtFile(f);
System.out.println(s);
regExp.email(s2,s);
regExp.tele(s2,s);
regExp.netAddress(s2,s);
regExp.idCard(s2,s);
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。