部分名称/内容文本需要Java文本解析帮助

时间:2010-09-09 06:20:58

标签: java regex parsing

我的文字格式如下:

  

部分名称1:

     

这篇文章进入了   第一节

     

部分名称2:

     

本文   进入第二部分

其中部分名称是任意短语,部分内容将包含除部分名称以外的自由文本。我需要将此文本拆分为类型的对象对(部分名称部分文本)。

是否有有效的RegEx或其他推荐方法?

感谢。 -Raj

2 个答案:

答案 0 :(得分:0)

您需要一个结构或一个固定的,可识别的分隔符来决定一行是否包含一个部分名称或一个部分正文。

如果您有一条规则说:以冒号结尾的文本行是一个部分名称,那么您应该逐行阅读该文档,查找一行中的最后一个字符并处理line(1)作为节头,如果它的最后一个字符是冒号,或者(2)作为节主体的一部分,否则。

答案 1 :(得分:0)

这取决于文档的结构。例如,每个部分都有一个空行吗?如果是这样,那么只需逐行扫描就可以轻松完成,只需按照这种方式构建对象。

List<Section> sections = new ArrayList<Section>();
String temp = null;
String line = null;
int lineNumber = 0;

while ((line = br.readLine()) != null) {
  lineNumber++;
  if (lineNumber % 2 == 0) {
    // Section Text
    sections.add(new Section(temp, line);
  }
  else {
    // Section Name
    temp = line;
  }
}

然后您的部分可能是:

public class Section {
  private final String name;
  private final String text;
  public Section(String name, String text) {
    this.name = name;
    this.text = text;
  }
}