我试图找出一种方法来分离同一行上的键值对。
将以下输入作为样本
key1=0 key2=val0 key3=my val 0 key4=some (val)
起初,我在输入数据中没有看到这个,因为它被埋没了,并没有认为有任何空格。因此,我根据空间将每一行分成一个数组,然后将结果数组作为Properties对象读取,最后读入我的Map。现在这会产生不好的结果。
此时我认为这是正则表达式的一个问题,而且我对这种技能非常糟糕。
有没有办法获取上面的示例数据(单个字符串)并正确地将其解析为生成的HashMap
key1:0
key2:val0
key3:my val 0
key4:some (val)
剔牙!
编辑,回答:
Pattern p = Pattern.compile("(\\w+)=\"*((?<=\")[^\"]+(?=\")|([^\\s]+))\"*");
String test = "a0=d235 a1=2314 com1=\"abcd\" com2=\"a b c d\"";
Matcher m = p.matcher(test);
while(m.find()){
print m.group(1);
print "="
println m.group(2);
}
答案 0 :(得分:0)
试试这个。
String s = "key1=0 key2=val0 key3=my val 0 key4=some (val)";
Pattern pat = Pattern.compile("(\\b\\w+)=(.*?)(?=\\w+=|$)");
Matcher m = pat.matcher(s);
while (m.find())
System.out.println(m.group(1) + ":" + m.group(2));
结果
key1:0
key2:val0
key3:my val 0
key4:some (val)