Java 正在分析此消息

Java 正在分析此消息,java,regex,linux,parsing,programming-languages,Java,Regex,Linux,Parsing,Programming Languages,所以我被表格的信息所困扰 { Envelope={ Category1={ "key1"="value1"} Category2={ "key2"="value2", "key3"="value3"} } } 我该如何解析这个奇怪的结构呢?我只对键值对感兴趣。我想要所有的,我不在乎类别。理想情况如下: key1 = value1 key2 = value2 key3 = value3 (带引号或不带引号) 任何语言的解决方案都是可以接受的。Perl、Python、java、C++、GnU工具

所以我被表格的信息所困扰

{ Envelope={ Category1={ "key1"="value1"} Category2={ "key2"="value2", "key3"="value3"} } }
我该如何解析这个奇怪的结构呢?我只对键值对感兴趣。我想要所有的,我不在乎类别。理想情况如下:

key1 = value1
key2 = value2
key3 = value3
(带引号或不带引号)


任何语言的解决方案都是可以接受的。Perl、Python、java、C++、GnU工具(SED,AWK…)。我现在能想到的唯一解决方案是编写一个Java/C++程序,但如果有更简单的方法,我希望避免这种情况。

通过bash工具
grep

$ grep -oE '"[^"]*"="[^"]*"' file
"key1"="value1"
"key2"="value2"
"key3"="value3"
grep--help

-o, --only-matching       show only the part of a line matching PATTERN
-E, --extended-regexp     PATTERN is an extended regular expression (ERE)
说明:

  • 与文本
    符号匹配
  • [^”]*
    匹配任何字符,但不匹配
    的零次或多次
    • Java解决方案

      String regex=“\”(\\w+)\“=\”(\\w+)\”

      第一组是关键

      第2组是值

      例如:

      public static void main(String[] args) throws ParseException {
          String w = "{ Envelope={ Category1={ \"key1\"=\"value1\"} Category2={ \"key2\"=\"value2\", \"key3\"=\"value3\"} } }";
          String regex = "\"(\\w+)\"=\"(\\w+)\"";
          Pattern p = Pattern.compile(regex);
          Matcher m = p.matcher(w);
          while (m.find()) {
              System.out.println("Key: " + m.group(1));
              System.out.println("Value: " + m.group(2));   
          }
      }
      
      输出

      Key: key1
      Value: value1
      Key: key2
      Value: value2
      Key: key3
      Value: value3
      

      在JavaScript中使用JSON解析器,在Java@ShoaibChikate这不太符合选民的意愿,请解释一下你为什么投反对票。我只是在寻找想法。最近这里的否决票数量正在破坏这个网站的全部目的。@chrylis确实如此。AFAIK这个奇怪的结构无法使用标准libs进行解析/formats@IanMcGrath我投了反对票,因为我喜欢看到OP的一些努力。这些“寻找想法”的问题常常看起来像是在寻找解决方案。你能解释一下吗?我对重新解释感到生疏。我想剩下的你都知道了,谢谢。这个答案启发我练习正则表达式。正则表达式FTW。