我有以下格式文本:Java的文本分析幫助
節名1:
本文進入 第一部分
節名2:
本文 進入第二部分
等,
其中部分名稱是任意短語,部分內容將包含除部分名稱以外的自由文本。我需要將此文本拆分爲對象類型(節名稱,節文本)。
是否有有效的RegEx或其他推薦的方法?
謝謝。 -Raj
我有以下格式文本:Java的文本分析幫助
節名1:
本文進入 第一部分
節名2:
本文 進入第二部分
等,
其中部分名稱是任意短語,部分內容將包含除部分名稱以外的自由文本。我需要將此文本拆分爲對象類型(節名稱,節文本)。
是否有有效的RegEx或其他推薦的方法?
謝謝。 -Raj
那它取決於你的文檔的結構。例如,每個部分是否有空行?如果是這樣,那麼只需逐行掃描,然後按照這種方式構建對象就很容易。
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;
}
}
您需要一個結構或一個固定的,可識別的分隔符來決定一行是否包含段名或段體。
如果您有一條規則說:以冒號結尾的文本行是段名稱,那麼您應該逐行讀取文檔,查找一行中的最後一個字符並將行(1)作爲部門主管,如果其最後的字符是冒號或(2)否則作爲部分主體的一部分。
當談到解析它要儘可能具體,是非常重要的。你需要區分段落名稱和文本......那麼它是什麼使它成爲appart?空白?行末的冒號?如果你想解析它,必須有一個特定的標準。這是允許的文字 – Arne 2010-09-09 06:26:39
「這是文字:」? – Arne 2010-09-09 06:27:14
Arne,謝謝你的迴應。你的問題讓我明白,不要再尋找一個銀色的子彈正則表達式,並使我的部分文本更加區分和解析。 – Raj 2010-09-10 18:33:59