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。