/* Separar texto por comas, excepto entre comillas, con expresiones regulares
Los elementos con comillas se devuelven sin las comillas
https://es.stackoverflow.com/q/65502/127 */
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
class Ideone
{
{
final String regex
= ",(\" ([^\" ]*)\" |[^,]*)" ; final String text
= ",12070024,Deutsche Bank Privat\" und\" Geschäftskunden,16856,\" Kyrätz, Prägnitz\" " ;
final Pattern pattern = Pattern.compile ( regex) ;
final Matcher matcher = pattern.matcher ( "," + text) ;
int n = 0 ;
System .
out .
println ( "Texto original: " + text
) ;
while ( matcher.find ( ) ) {
System .
out .
print ( "Elemento " + ++ n
+ ": " ) ;
if ( matcher.group ( 2 ) != null )
{ // Elemento entre comillas?
elemento = matcher.group ( 2 ) ; // Obtener el texto sin las comillas
}
else
{
elemento = matcher.group ( 1 ) ;
}
}
}
}
LyogU2VwYXJhciB0ZXh0byBwb3IgY29tYXMsIGV4Y2VwdG8gZW50cmUgY29taWxsYXMsIGNvbiBleHByZXNpb25lcyByZWd1bGFyZXMKICAgTG9zIGVsZW1lbnRvcyBjb24gY29taWxsYXMgc2UgZGV2dWVsdmVuIHNpbiBsYXMgY29taWxsYXMKICAgaHR0cHM6Ly9lcy5zdGFja292ZXJmbG93LmNvbS9xLzY1NTAyLzEyNyAqLwogCmltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwogCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKIAoJCWZpbmFsIFN0cmluZyByZWdleCA9ICIsKFwiKFteXCJdKilcInxbXixdKikiOwoJCWZpbmFsIFN0cmluZyB0ZXh0ICA9ICIsMTIwNzAwMjQsRGV1dHNjaGUgQmFuayBQcml2YXRcIiB1bmRcIiBHZXNjaMOkZnRza3VuZGVuLDE2ODU2LFwiS3lyw6R0eiwgUHLDpGduaXR6XCIiOwogCgkJZmluYWwgUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsKCQlmaW5hbCBNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoIiwiICsgdGV4dCk7CgkJCgkJU3RyaW5nIGVsZW1lbnRvOwoJCWludCBuID0gMDsKCQkKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRleHRvIG9yaWdpbmFsOiAiICsgdGV4dCk7CiAKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKCSAgICAgICAgU3lzdGVtLm91dC5wcmludCAgKCJFbGVtZW50byAiICsgKytuICsgIjogIik7CgkgICAgICAgIAoJICAgICAgICBpZiAobWF0Y2hlci5ncm91cCgyKSAhPSBudWxsKQoJICAgICAgICB7ICAgLy8gRWxlbWVudG8gZW50cmUgY29taWxsYXM/CgkgICAgICAgIAllbGVtZW50byA9IG1hdGNoZXIuZ3JvdXAoMik7IC8vIE9idGVuZXIgZWwgdGV4dG8gc2luIGxhcyBjb21pbGxhcwoJICAgICAgICB9CgkgICAgICAgIGVsc2UKCSAgICAgICAgewoJICAgICAgICAJZWxlbWVudG8gPSBtYXRjaGVyLmdyb3VwKDEpOwoJICAgICAgICB9CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlbGVtZW50byk7CgkJfQoJfQp9