【问题标题】:Java String parsing including line break and regular expressionJava字符串解析,包括换行和正则表达式
【发布时间】: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"。跨度>

标签: java regex parsing


【解决方案1】:

尝试使用 \s+key.+\s.+

Demo here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2021-11-26
    • 2023-03-14
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多