在Java中解析来自文本文件的数据

时间:2014-09-08 18:13:46

标签: java parsing

我正在尝试用Java创建一个解析器来帮助我从文本文件中获取一些细节。

文件中的数据如下所示,但有更多条目:

. 
http://www.someurl1.com/
PERSONAL ADDRESS: Mozart, W.A.; Some address 1, Austria; email: mymail1@mail.com

. 
http://www.someurl2.com/
PERSONAL ADDRESS: Beethoven, L.V.; Some address 2, Germany; email: mymail2@mail.com

正如您所看到的,数据始终尊重模式,我想要获得的只是每个条目的名称和电子邮件。可能的好输出是:

Mozart, W.A. ; mymail1@mail.com
Beethoven, L.V. ; mymail2@mail.com

每个条目都以.开头,后跟第一行中的空格。然后在点上方的下一行,有URL。在以下行中,有更多数据:姓名,地址和电子邮件,所有数据都以;分隔。

这并不难,但我遇到了一些麻烦。我创建了一个Main类,在其中我将文本文件读取到String。但是我真的不知道在Java中解析这样的东西的最佳方法是什么,如果我应该尝试使用正则表达式或只是寻找;

2 个答案:

答案 0 :(得分:5)

逐行读入文本文件,然后根据该行执行操作。

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
   // process the line.
   if (line.equals(". "))
   {
       // Do something with first line
       line = br.readLine()
       // Do something with second line
       line = br.readLine()
       // Split up the third line by space 
       String split[]= StringUtils.split(line); // split[1] = "Mozart," so you may need to do a little more work there
   }
}
br.close();

答案 1 :(得分:1)

使用分割字符串名称很简单,然后使用正则表达式来捕获电子邮件部分! 有很多例子,这里有一个

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b