I have searched through several posts on stackoverflow on how to split a string on comma delimiter, but ignore splitting on comma in quotes (see: How do I split a string into an array by comma but ignore commas inside double quotes?) I am trying to achieve just similar results, but need to also allow for a string that contains one double quote.
IE. Need "test05, \"test, 05\", test\", test 05" to splits into
- test05
- "test, 05"
- test"
- test 05
I tried a similar method to one mentioned here:
Regex for splitting a string using space when not surrounded by single or double quotes
Using Matcher, instead of split(). however, that specific examples it splits on spaces, and not on commas. I've tried to adjust the pattern to account for commas, instead, but have not had any luck.
String str = "test05, \"test, 05\", test\", test 05";
str = str + " "; // add trailing space
int len = str.length();
Matcher m = Pattern.compile("((\"[^\"]+?\")|([^,]+?)),++").matcher(str);
for (int i = 0; i < len; i++)
{
    m.region(i, len);
    if (m.lookingAt())
    {
        String s = m.group(1);
        if ((s.startsWith("\"") && s.endsWith("\"")))
        {
            s = s.substring(1, s.length() - 1);
        }
        System.out.println(i + ": \"" + s + "\"");
        i += (m.group(0).length() - 1);
    }
}
 
     
     
     
     
     
    