在值之间用逗号拆分字符串并忽略值内的逗号

Split String by comma between values and ignore comma inside a value

我有一个这样的字符串输入:

"null, value1(String), value2-1, value2-2. (String), value3(Long)";

我想像这样拆分这个字符串

输出:字符串[] SplittedTab;

SplittedTab[0] = "null";
SplittedTab[1] = "value1(String)";
SplittedTab[2] = "value2-1, value2-2. (String)";
SplittedTab[3] = "value3(Long)";

我从一个简单的拆分函数开始:

input = input.split(",");

但我明白了:

SplittedTab[0] = "null";
SplittedTab[1] = "value1(String)";
SplittedTab[2] = "value2-1"; 
SplittedTab[3] = " value2-2. (String)";
SplittedTab[4] = "value3(Long)";

value2 也被拆分了,因为里面有一个逗号。:)

我认为可以使用正则表达式拆分输入,但我对正则表达式一窍不通:s

P.S : 我无法更改输入:)

谁能帮帮我? :)

此致,

你可以试试这个基于回顾的拆分正则表达式:

String[] arr = input.split("(?<=null|\))\s*,\s*");

(?<=null|\) 是先行断言前一个位置是逗号前的 null)

Code Demo

RegEx Demo