fork(1) download
  1. /* Separar texto por comas, excepto entre comillas, con expresiones regulares
  2.   Los elementos con comillas se devuelven sin las comillas
  3.   https://es.stackoverflow.com/q/65502/127 */
  4.  
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12.  
  13. final String regex = ",(\"([^\"]*)\"|[^,]*)";
  14. final String text = ",12070024,Deutsche Bank Privat\" und\" Geschäftskunden,16856,\"Kyrätz, Prägnitz\"";
  15.  
  16. final Pattern pattern = Pattern.compile(regex);
  17. final Matcher matcher = pattern.matcher("," + text);
  18.  
  19. String elemento;
  20. int n = 0;
  21.  
  22. System.out.println("Texto original: " + text);
  23.  
  24. while (matcher.find()) {
  25. System.out.print ("Elemento " + ++n + ": ");
  26.  
  27. if (matcher.group(2) != null)
  28. { // Elemento entre comillas?
  29. elemento = matcher.group(2); // Obtener el texto sin las comillas
  30. }
  31. else
  32. {
  33. elemento = matcher.group(1);
  34. }
  35. System.out.println(elemento);
  36. }
  37. }
  38. }
Success #stdin #stdout 0.05s 4386816KB
stdin
Standard input is empty
stdout
Texto original: ,12070024,Deutsche Bank Privat" und" Geschäftskunden,16856,"Kyrätz, Prägnitz"
Elemento 1: 
Elemento 2: 12070024
Elemento 3: Deutsche Bank Privat" und" Geschäftskunden
Elemento 4: 16856
Elemento 5: Kyrätz, Prägnitz