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

时间:2016-01-15 14:57:35

标签: java regex string split comma

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

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

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

输出:String [] 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:我无法改变输入:)

任何人都可以帮助我吗? :)

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:4)

你可以根据lookbehind尝试这个拆分正则表达式:

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

(?<=null|\\)预示在逗号之前断言前一个位置为null)

Code Demo

RegEx Demo