Java正则表达式:拆分逗号分隔的值,但忽略引号中的逗号

Java正则表达式:拆分逗号分隔的值,但忽略引号中的逗号,java,regex,Java,Regex,我的案文如下: "text","1","more, more text","3" 有谁能告诉我我必须使用什么regex delimeters才能获得以下信息: text 1 more, more text 3 在“matcher类的方法”之前,我一直在阅读Sun教程,但我仍然不知所措。谢谢 如果它是类似于text,1,more的东西,那就很容易了,但不幸的是,它不是这样的。有什么想法吗?你可以得到每一个以“开头的部分,然后用另一个”结尾,然后用子字符串替换每个部分的第一个和最后一个字符。你可

我的案文如下:

"text","1","more, more text","3"
有谁能告诉我我必须使用什么regex delimeters才能获得以下信息:

text
1
more, more text
3
在“matcher类的方法”之前,我一直在阅读Sun教程,但我仍然不知所措。谢谢


如果它是类似于
text,1,more
的东西,那就很容易了,但不幸的是,它不是这样的。有什么想法吗?

你可以得到每一个以
开头的部分,然后用另一个
结尾,然后用子字符串替换每个部分的第一个和最后一个字符。

你可以得到每一个以
开头,最后用另一个
结尾的部分。”
然后对每个部分的第一个和最后一个字符进行子串。

您可以尝试类似的方法。我知道,这不是一个好的解决方案,但它可以帮助您:)


你可以试试那样的。我知道,这不是一个好的解决方案,但它可以帮助您:)


你可以试试这个
[^\“]+(?

你可以试试这个
[^\“]+(?

你可以直接使用split()方法,如下所示:

    String text = "\"text\",\"1\",\"more, more text\",\"3\"";

    String[] split = text.split("\"(,\")?");
    for (String string : split) {
        System.out.println(string);
    }
    Pattern pattern = Pattern.compile("\"([^\"]+)\"");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group(1));
    }
(注意,这将返回长度为5的数组,第一个位置是空字符串)

或者,如果您想使用模式/匹配器,可以这样做:

    String text = "\"text\",\"1\",\"more, more text\",\"3\"";

    String[] split = text.split("\"(,\")?");
    for (String string : split) {
        System.out.println(string);
    }
    Pattern pattern = Pattern.compile("\"([^\"]+)\"");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group(1));
    }

您可以直接使用split()方法,如下所示:

    String text = "\"text\",\"1\",\"more, more text\",\"3\"";

    String[] split = text.split("\"(,\")?");
    for (String string : split) {
        System.out.println(string);
    }
    Pattern pattern = Pattern.compile("\"([^\"]+)\"");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group(1));
    }
(注意,这将返回长度为5的数组,第一个位置是空字符串)

或者,如果您想使用模式/匹配器,可以这样做:

    String text = "\"text\",\"1\",\"more, more text\",\"3\"";

    String[] split = text.split("\"(,\")?");
    for (String string : split) {
        System.out.println(string);
    }
    Pattern pattern = Pattern.compile("\"([^\"]+)\"");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group(1));
    }
尝试以下模式:
“(.+?)”

它将在双引号之间匹配1个或多个字符。引号之间的文本部分可用作
matcher.group(1)

查看javadoc中的
模式
类了解更多信息。此外,还可以查看
matcher.find()
方法。

尝试以下模式:
“(.+?)”

"[^"]*"
它将在双引号之间匹配1个或多个字符。引号之间的文本部分可用作
matcher.group(1)

查看javadoc中的
Pattern
类以了解更多信息。此外,还可以查看
matcher.find()
方法

"[^"]*"
看来是的! 在java字符串中,您可以使用

"\"[^\"]*\""
您可以在此处进行在线测试:

看来是的! 在java字符串中,您可以使用

"\"[^\"]*\""

您可以在此处进行在线测试:

非常好。我将解析文本以删除第一个引号(处理空字符串)并使用正则表达式。谢谢!非常好。我将解析文本以删除第一个引号(处理空字符串)并使用正则表达式。谢谢!+1我一直在寻找该模式(匹配一个或多个字符)。谢谢!+1我已经寻找该模式很久了(匹配一个或多个字符)。谢谢!它在网站上运行,但当我在java中尝试时,它返回一个空字符串和四个逗号。非常好的网站bdw:)它可以在配额之间查找任意数量的非配额符号。也就是说,它可以在空字符串(“,”qwert,tyy“,”)中正常工作。请尝试以下代码:
public static void main(String[]args){String text=“\”text\”,\“1\”,\“more,more text\”,\“3\”;String[]split=text.split(“[^\”]*”);for(String-String-String:split){System.out.println(string);}}
它在网站上工作,但是当我在java中尝试它时,它返回一个空字符串和四个逗号。非常好的网站bdw!:)它可以在配额之间找到任意数量的非配额符号。也就是说,它在空字符串(“,”qwert,tyy“,”)上工作。请尝试以下代码:
public static void main(String[]args){String text=“\'text\”,\'1\”,\'more,more text\”,\'3\”;String[]split=text.split(\“\”[^\”]*\”);for(String-String:split){System.out.println(String);}