我正在尝试用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中解析这样的东西的最佳方法是什么,如果我应该尝试使用正则表达式或只是寻找;
。
答案 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