我试图找出一种方法来分离出同一行上的键值对。JAVA:解析单个字符串键值对
看看下面的输入作为样本
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);
}
+3
答案在这里找到http://stackoverflow.com/questions/11478437/java-regex-help-capturing-key-value-pairs –
+0
你能告诉我们你的代码到目前为止尝试过? –
+0
您是否尝试过使用字符串标记器?这可能是一个更简单的正则表达式选项。 –