C'est possible avec une regex mais c'est peut-être pas le plus lisible.
Quoi qu'il en soit c'est à la limite de ce qu'on peut faire avec les expressions régulières :Code:/((?:"(?:\\"|[^"])*"\s*)|(?:[^,"]*\s*)),?/g
J'ai testé et ça match bien chaque partie de cette chaîne-là :Code:"Maman",Papa,"Julie, \"Franck\"\net Tom","Mamy","Papy"
Bien entendu vu que le Java c'est super verbeux c'est tout de suite moins joli :Par contre ça match aussi la chaîne vide, donc y'a une occurrence de trop à la fin, j'arrive pas à l'enlever. :?Code:
1
2
3
4
5
6
7
8
9 String s = "\"Maman\",Papa,\"Julie, \\\"Franck\\\"\net Tom\",\"Mamy\",\"Papy\""; String regex = "((?:\"(?:\\\\\"|[^\"])*\"\\s*)|(?:[^,\"]*\\s*)),?"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); System.out.println("Chaîne : "+ s +"\nRegex : "+ regex); int hit = 0; while(m.find()) { System.out.println(++hit + " : " + m.group(1)); }