您好我正在寻找使用java从文件中提取特定段落的最佳方法。
根据以下数据,我需要从“D& A”中提取数据到 Testing1- End 和第2段 “D& A”至 Testing2- End
请指导我获得此值的最佳方法。由于
//文件数据(例如:)
Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata TestingdataD and A Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1Testing1 Testing1 Testing1 Testing1 Testing1 Testing1 Testing1- End
Date 11/30/11 Page 2
D and A Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Date 11/30/11 Page 3 D and A Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 Testing2 -End
答案 0 :(得分:1)
我会逐行阅读文件,例如this教程。
然后,您可以检查该行是否包含某个字符串。
boolean readFollowingLines = false;
ArayList<String> paragraph=new ArayList<String>();
if( string.indexOf("1- End") > 0 ) // maybe >= 0, not shure
readFollowingLines = false;
if (readFollowingLines)
paragraph.add(string);
if( string.indexOf("D and A") > 0 ) // maybe >= 0, not shure
readFollowingLines = true;
如果你想要一个以上的段落,你需要扩展一点。 无论如何,我可能会这样做
答案 1 :(得分:1)
对于像这样的输入
Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata Testingdata
D和A
测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1-结束Date 11/30/11 Page 2
D和A
测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2Date 11/30/11 Page 3
D和A
测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2-结束
以下Regex将帮助您
String input="";
BufferedReader br = new BufferedReader(new FileReader("path/to/text/file")); //file path will be something like "D:/test1.txt" or "/home/naishe/test1.txt"
String line;
while((line = br.readLine()) != null) {
input += line+"\n";
}
Pattern p = Pattern.compile("(D and A\\s).*?(Testing(1|2)\\- End)");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println("MATCHED:\n" + m.group());
}
给出
相合:
相合
D和A
测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1测试1-结束:
D和A
测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2测试2-结束