使用逗号分割数据,包含冒号的密钥

时间:2018-10-09 11:29:27

标签: java regex

我试图在键值对中使用逗号分割数据,但值可以包含逗号:

String test2= abc=def,jkl,nm=ghi
String[] testVals=test2.split("(?=,\\w+=)(,)");

现在问题出在以下数据上:

输入:

1,abc=def123,nm=ghi-ghy,jkl,egrh=878787,kjasd:1:1=908@0982

我得到的输出为:

abc=def123
nm=ghi-ghy,jkl
egrh=878787,kjasd:1:1=908@0982

预期输出:

1
abc=def123
nm=ghi-ghy,jkl
egrh=878787
kjasd:1:1=908@0982

缺少 1

1 个答案:

答案 0 :(得分:1)

改为使用此正则表达式:

,(?=[^,]*?=)


 String test2 = "1,abc=def123,nm=ghi-ghy,jkl,egrh=878787,kjasd:1:1=908@0982";
 testVals=test2.split(",(?=[^,]*?=)");

说明

  • ,匹配逗号
  • (?=[^,]*?=)正面看得出断言,当前匹配的逗号和下一个等号=之间没有逗号

输出

1
abc=def123
nm=ghi-ghy,jkl
egrh=878787
kjasd:1:1=908@0982

demo regex 101