用于“,”但不“,”的Java正则表达式

用于“,”但不“,”的Java正则表达式,java,regex,string,split,Java,Regex,String,Split,我有一个字符串str a,B,C,[D,E,F],我正试图拆分它,这样我得到的字符串数组将包含元素a,B,C和[D,E,F]。 但是,当我运行str.split时,字符串数组包含A、B、C、[D、E和F]。 要解决这个问题,我应该使用哪个正则表达式进行拆分?您可以使用一个来忽略逗号,后跟一个空格 str.split(",(?! )") 可以使用忽略后跟空格的逗号 str.split(",(?! )") 免责声明:源自Tushar的上述评论 public static void main(St

我有一个字符串str a,B,C,[D,E,F],我正试图拆分它,这样我得到的字符串数组将包含元素a,B,C和[D,E,F]。 但是,当我运行str.split时,字符串数组包含A、B、C、[D、E和F]。 要解决这个问题,我应该使用哪个正则表达式进行拆分?

您可以使用一个来忽略逗号,后跟一个空格

str.split(",(?! )")
可以使用忽略后跟空格的逗号

str.split(",(?! )")

免责声明:源自Tushar的上述评论

public static void main(String[] args) {
    String s = "A,B,C,[D, E, F]";

    Matcher matcher = Pattern.compile("\\[.*?]|[A-Z]+").matcher(s);
    while (matcher.find())
        System.out.println(matcher.group());
}

免责声明:源自Tushar的上述评论

public static void main(String[] args) {
    String s = "A,B,C,[D, E, F]";

    Matcher matcher = Pattern.compile("\\[.*?]|[A-Z]+").matcher(s);
    while (matcher.find())
        System.out.println(matcher.group());
}

您可以使用match而不是split,使用regex/\[.*.]|[^,]+/A、B、C、D、[E、F、G、H]的预期输出是什么?请注意方括号外和方括号内逗号前的空格。您可以使用match而不是split,使用regex/\[.*.].[^,]+/A、B、C、D、[E、F、G、H]的预期输出是什么?注意逗号前面的空格在方括号外和方括号内。我认为OP不想用空格分隔。OP希望以不同的方式处理方括号中的字符串。@t括号中的字符串有空格。看问题标题。是的。工作得很有魅力。谢谢,shmosel。我想OP不想占用空间。OP希望以不同的方式处理方括号中的字符串。@t括号中的字符串有空格。看问题标题。是的。工作得很有魅力。谢谢,希莫塞尔。