Java字符串解析,包括换行符和正则表达式
我正在解析具有值的文件Java字符串解析,包括换行符和正则表达式,java,regex,parsing,Java,Regex,Parsing,我正在解析具有值的文件 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();
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”。尝试使用
\s+key.+\s.+
您可以写入预期输出吗?您好,对于前两个kv记录(包含4个子串的字符串)和最后一个记录,它将像->键“val2”数据“20”一样->仅键“val3”。