我试图在键值对中使用逗号分割数据,但值可以包含逗号:
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 。
答案 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