Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串解析,包括换行符和正则表达式_Java_Regex_Parsing - Fatal编程技术网

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”。