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

java正则表达式模式拆分逗号,java,regex,Java,Regex,控制台 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("--------------------

控制台

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"]
-----------------------
我想知道结果

控制台

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"]
-----------------------
java正则表达式模式拆分逗号(,)的帮助


谢谢

试试这个
,(?=\\w=(\“+”)
我在netbeans中试用了你的示例代码,我把它发布了

> a=1
> b="1,2"
> c=[d=1,e="1,1"]
-----------------------
这不是您想要的吗?

您可以使用以下代码:

> a=1
> b="1,2"
> c="[d=1,e=1,11]"  
此正则表达式仅当逗号后跟偶数个双引号时才与之匹配。因此双引号内的逗号不匹配,但所有外部逗号都用于拆分输入

PS:这只适用于平衡引号字符串。这不起作用:
“a=1,b=\“1,2”
,因为双引号是不平衡的

输出:

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);
我将对其进行编程:

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

根据您的要求,您必须编写自己的解析器,因为正则表达式在有任何规则模式遵循的情况下都可以工作。但在您的情况下,您希望在字母表的基础上进行拆分,而字母表不应成为任何breaces的一部分。因此正则表达式在这种情况下没有帮助。