java - 使用逗号分割数据,键包含冒号

标签 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

最佳答案

改用这个正则表达式:

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


 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

关于java - 使用逗号分割数据,键包含冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719998/

相关文章:

c# - 如果它仅位于字符串中第一个和最后一个位置,如何删除特殊字符c#

PHP正则表达式(电话号码)

java - 不幸的是,App已停止(Android开发)

java - 通过rest和html作为客户端上传文件

java - 使用 cssSelector 按文本选择嵌套元素 - Selenium WebDriver

java - 大括号前面所有文本的正则表达式模式

java - 一键选择所有相同的 jtable 值

java - 如何通过程序跳过testNG.xml中提到的类

javascript - 在重复单词之前包含字符串

java - 如何用正则表达式替换切割字符串逻辑?