Java:使用Regex拆分字符串

rvd*_*rvd 8 java regex

我必须使用逗号(,)作为分隔符拆分字符串,并忽略引号内的任何逗号(")

fieldSeparator : ,
fieldGrouper : "

要拆分的字符串是: "1","2",3,"4,5"

我能够实现如下:

String record = "\"1\",\"2\",3,\"4,5\"";
String[] tokens = record.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
Run Code Online (Sandbox Code Playgroud)

输出:

"1"
"2"
3
"4,5"
Run Code Online (Sandbox Code Playgroud)

现在的挑战是fieldGrouper(")不应该是拆分令牌的一部分.我无法弄清楚这个的正则表达式.

拆分的预期输出是:

1
2
3
4,5
Run Code Online (Sandbox Code Playgroud)

Ent*_*orm 4

更新:

String[] tokens = record.split( "(,*\",*\"*)" );

结果:
图片链接

初始解决方案:
(@方法不起作用.split

此 RexEx 模式将隔离您想要的部分:
(?:\\")(.*?)(?:\\")

它使用非捕获组来隔离转义引号对,并使用捕获组来隔离之间的所有内容。

在这里查看: 现场演示

  • 此正则表达式与 `3` 或任何其他未用 `"..."` 括起来的值不匹配。 (2认同)