从文件数据中提取特定段落的最佳方法

时间:2012-01-04 12:24:28

标签: java

您好我正在寻找使用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 Testingdata

D 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

2 个答案:

答案 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测试2

                                              Date 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-结束