【发布时间】:2016-04-07 17:29:59
【问题描述】:
我有可能有价值的字符串数据流
system_id "2.2.2.1"
component_id 6
sequence_number 11
timestamp 1459202982
kv {
key "val1"
}
kv {
key "val2"
}
kv {
key "val3"
}
system_id "2.2.2.1"
component_id 6
sequence_number 15
timestamp 1459202982
kv {
key "val4"
}
kv {
key "val5"
} and so on....
我感兴趣的是键的值,它们是 val1, val2, val3....
我正在使用如下所示的扫描仪,
scan = new Scanner(new File("kvfiles/file1")).useDelimiter("\\s+kv\\s+\\{\\s+"); //To ignore any thing before "kv"
while (scan.hasNext()) {
String str = scan.next();
finalString = str.split("\\s+\\}")[0];
}
当文件以“kv {”启动时,此代码工作正常,但在上述情况下,当文件以以下提及的值启动时,解析器给出错误。
system_id "2.2.2.1"
component_id 6
sequence_number 11
timestamp 1459202982
知道如何跳过这个数据块吗?
注意:这个数据块偶尔会出现在一些“kv { }”标签之后,我只需要在它出现时忽略它。
【问题讨论】:
-
请提供有关错误的详细信息。
-
this demo 是否按预期工作?
标签: java regex parsing java.util.scanner