Java从文件中分离单词和含义

时间:2016-08-19 10:43:04

标签: java regex split

我需要从文件中分离单词和含义然后我想存储 sqlite(WORDS)表中的每个单词及其在另一个(MEANING)表中的相应含义。

文件看起来像这样。

word 1
    explanation 1
    explanation 1
    explanation 1

    explanation 1
word 2
    explanation 2
    explanation 2

    explanation 2
    explanation 2
word 3
    explanation 3
    explanation 3
    explanation 3

    explanation 3
word 4
    explanation 4

    explanation 4

    explanation 4

现在的问题是我无法弄清楚如何以1-1的对应方式分割单词和含义。解剖线之间的空格即使分割后也应该存在。

以下是我到目前为止所尝试的示例代码。

Scanner sc = new Scanner(file);
String abbr = "";
String exp = "";
String line;
while (sc.hasNext()) {
    if (!(line = sc.nextLine()).isEmpty() && !(line.startsWith("    "))) {
        abbr = line;
        //Debug
        System.out.println(abbr);
        printExp(exp);
        exp = "";
    } else if (line.isEmpty() || line.startsWith("  ")) {
        exp += line;
    }
}

用于调试目的的方法。

public static void printExp(String exp) {
    if (!exp.equals("")) {
        System.out.println(exp);
    }
}

你可以想到任何其他简单的解决方案,例如通过正则表达式。 非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

如果我说得不错,可能会为你做这件事:

^(\w.*)((?:\n(?:$|\W).*)*)

它捕获以单词字符开头的行。然后它捕获以空格开头或空的任意数量的行。

See it here at regex101