java从字符串中提取逗号分隔的元素

java从字符串中提取逗号分隔的元素,java,regex,string,split,Java,Regex,String,Split,我有这样一个字符串: String input= 'hello',2,[5,6],'city'. 因此字符串由不同类型的元素组成 我“简单地”需要提取用逗号分隔的元素。但是我找不到 一种避免将逗号考虑到元素 [5,6] < /代码>的方法。 我尝试使用split()方法,并考虑了许多不同的正则表达式 达到我的目标,但没有成功。,(?![^\[]*[]])适合这份工作 class Test { public static void main(String[] args){

我有这样一个字符串:

String input= 'hello',2,[5,6],'city'.
因此字符串由不同类型的元素组成

我“简单地”需要提取用逗号分隔的元素。但是我找不到 一种避免将逗号考虑到元素<代码> [5,6] < /代码>的方法。 我尝试使用split()方法,并考虑了许多不同的正则表达式 达到我的目标,但没有成功。

,(?![^\[]*[]])
适合这份工作

class Test {
    public static void main(String[] args){

        String test = "'hello',2,[5,6],'city'";
        String[] output = test.split(",(?![^\\[]*[]])");

        for (String s : output)
            System.out.println(s);

    }
}
输出:

'hello'
2
[5,6]
'city'
,(?![^\[]*[]])
适合这份工作

class Test {
    public static void main(String[] args){

        String test = "'hello',2,[5,6],'city'";
        String[] output = test.split(",(?![^\\[]*[]])");

        for (String s : output)
            System.out.println(s);

    }
}
输出:

'hello'
2
[5,6]
'city'

提供的输入无效字符串应以文字(双引号)包装(,(?![^\\[\]*\\]*)”,如果您处理CSV,请获取CSV解析器。提供的输入无效字符串应以文字(双引号)包装(,(?![^\\[\\]*\]),如果您处理CSV,获取CSV解析器。非常感谢。我能问你这个正则表达式是怎么工作的吗?我不太清楚圆括号内的文本。@Marco<我只能让你理解正则表达式及其变体的作用。非常感谢。我能问你这个正则表达式是怎么工作的吗?圆括号内的文本对我来说不太清楚。@Marco<我只能让你理解正则表达式及其变体的作用。