关于如何将文件内容提取(正则表达式)

test.properties:


region_data UA:444 PPA:444;
comparison_data UA:333 PPA:888;

文件内容类:



public class DataForm {
private String destType;
private String dataBaseRegion;
private String InstanceId;



DataForm(String destType,String dataBaseRegion,String InstanceId){
this.destType = destType;
this.dataBaseRegion = dataBaseRegion;
this.InstanceId = InstanceId;
}

public String getdestType() {
return destType;
}


public void setdestType(String dataType) {
this.destType = dataType;
}


public String getDataBaseRegion() {
return dataBaseRegion;
}




public void setDataBaseRegion(String dataBaseRegion) {
this.dataBaseRegion = dataBaseRegion;
}




public String getInstanceId() {
return InstanceId;
}




public void setInstanceId(String instanceId) {
InstanceId = instanceId;
}




public static void main(String[] args) {
// TODO Auto-generated method stub


}


}

操作类:

import java.io.BufferedReader;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
/**
 * 注意在test.properties文件中要按照格式进行填写
 * example :  最后都要以;结束。
 * @author linyuan
 *
 */
public class FileTest{
private static String regexForRegion = ";";
private static String regexFordata = " ";
private static String regexForDetails = ":";
private static String regionString;
private static String comparisonString;


public static  String[] getRegexForRegion(StringBuffer in)
{
Pattern p = Pattern.compile(regexForRegion);
    String[] region = p.split(in);
    return region;
}
public static String[] getRegexFordata(String in)
{
Pattern p = Pattern.compile(regexFordata);
    String[] region = p.split(in);
    return region;
}
public static String[] getregexForDetails(String in)
{
Pattern p = Pattern.compile(regexForDetails);
    String[] region = p.split(in);
    return region;
}
public static void main(String[] args) throws IOException {
/**
* 读取文件内容
*/
List<DataForm> dataSource = new ArrayList<DataForm>();
StringBuffer buffer = new StringBuffer();
BufferedReader reader = null;
InputStream is = null;
try{
is = new FileInputStream("test.properties");
        String line; // 用来保存每行读取的内容
        reader = new BufferedReader(new InputStreamReader(is));
        line = reader.readLine(); // 读取第一行
        while (line != null) { // 如果 line 为空说明读完了
            buffer.append(line); // 将读到的内容添加到 buffer 中
            buffer.append("\n"); // 添加换行符
            line = reader.readLine(); // 读取下一行
        }
        /**
         * 开始进行文件文件内容匹配
         */
        String[] region = getRegexForRegion(buffer);//获得数据源和参考数据库字符串
        String[] regionDataPair;
        String[] comparisonDataPair;
        Pattern p = Pattern.compile(regexForRegion);
        regionString = region[0].substring("region_data ".length(), region[0].length());
        comparisonString = region[1].replaceAll("comparison_data ", "");
        regionDataPair = getRegexFordata(regionString);
        comparisonDataPair = getRegexFordata(comparisonString);//获得到数据对
        for(int i = 0; i < regionDataPair.length;i++)
        {
        String[] data = getregexForDetails(regionDataPair[i]);
        dataSource.add(new DataForm("region",data[0],data[1]));
        }
        for(int i = 0; i < comparisonDataPair.length;i++)
        {
        String[] data = getregexForDetails(comparisonDataPair[i]);
        dataSource.add(new DataForm("comparison",data[0],data[1]));
        }
}catch(Exception e)
{
e.printStackTrace();
}
finally{
        reader.close();
        is.close();
}
for(int j = 0; j < dataSource.size();j++)
{
System.out.println("目标是"+dataSource.get(j).getdestType()+",数据库类型是"+dataSource.get(j).getDataBaseRegion()+",实例代号是"+dataSource.get(j).getInstanceId()+"\n");
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值