【发布时间】:2016-04-07 23:44:04
【问题描述】:
我正在解析具有值的文件
kv {
key "val1"
data "10"
}
kv {
key "val2"
data "20"
}
kv {
key "val3"
}
Pattern p = Pattern.compile("\\s+key.+");
Scanner sc = new Scanner(new File("kv.txt"));
while (sc.hasNextLine()) {
sc.nextLine();
String line = sc.findInLine(p);
if (line != null) {
System.out.println(line);
}
}
上面的代码很好地挑选了所有具有“key”值的行,但在某些情况下,我得到的数据也具有“data”元素,如前两条记录所示。想知道我应该将什么正则表达式传递给 Pattern.compile 方法,该方法选择数据直到结束大括号 - kv 元素的“}”。
我期望的输出是 -> 键“val1”数据“10”和键“val2”数据“20”用于前两个 kv 记录(包含 4 个子字符串的字符串)和最后一个 -> 键“val3”仅限。
【问题讨论】:
-
你能写出预期的输出吗?
-
嗨,前两条 kv 记录(包含 4 个子字符串的字符串)和最后一条 -> 键 "val2" 数据 "20" 就像 -> 仅键 "val3"。跨度>