如何为包含lookbehind和lookahead的正则表达式拆分字符串

时间:2014-03-11 11:33:01

标签: java regex

我想分割以下字符串:

"VALUE:VALUE,VALUE:[VALUE1,VALUE2,VALUE3],VALUE:VALUE"

"VALUE:VALUE"
"VALUE:[VALUE1,VALUE2,VALUE3]"
"VALUE:VALUE"

我期待:

String[] elements = text.split("(?<!\\[),|,(?!\\])");

让我分开,因为我认为这意味着如果它之前或之后有一个括号,它就不会匹配逗号,但这会返回:

"VALUE:VALUE"
"VALUE:[VALUE1"
"VALUE2"
"VALUE3]"
"VALUE:VALUE"

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您没有嵌套的可能性,请尝试使用此正则表达式:

String[] elements = text.split(",(?![^\\[]*\\])");

这与逗号之间没有]后面没有任何[的逗号匹配。

ideone demo