gpt4 book ai didi

java正则表达式模式分割逗号

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:39 26 4
gpt4 key购买 nike

String line = "a=1,b=\"1,2\",c=\"[d=1,e=1,11]\"";
String[] tokens = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)|,(?=\"[\\([^]]*\\)|[^\"]]*\")");
for (String t : tokens) {
System.out.println("> " + t);
}
System.out.println("-----------------------");

控制台

> a=1
> b="1,2"
> c=[d=1
> e="1,1"]
-----------------------

我要结果

控制台

> a=1
> b="1,2"
> c=[d=1,e="1,1"]
-----------------------

帮助 java 正则表达式模式拆分逗号 (,)

谢谢

最佳答案

您可以使用此代码:

String line = "a=1,b=\"1,2\",c=\"[d=1,e=1,11]\"";
String[] tokens = line.split(",(?=(([^\"]*\"){2})*[^\"]*$)");
for (String t : tokens)
System.out.println("> " + t);

此正则表达式仅在其后跟偶数个双引号时才匹配逗号。因此双引号内的逗号不匹配,但是所有外部逗号都用于拆分您的输入。

PS:这仅适用于平衡引用的字符串。例如这是行不通的:"a=1,b=\"1,2" 因为双引号不平衡。

输出:

> a=1
> b="1,2"
> c="[d=1,e=1,11]"

关于java正则表达式模式分割逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17963969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com