/* Separar texto por comas, excepto entre comillas, con expresiones regulares
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
= ",10010222,\" The Royal Bank of Scotland, Niederlassung Deutschland\" ,10105,Berlin" ;
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
+ ": " ) ; System .
out .
println ( matcher.
group ( 1 ) ) ; }
}
}
LyogU2VwYXJhciB0ZXh0byBwb3IgY29tYXMsIGV4Y2VwdG8gZW50cmUgY29taWxsYXMsIGNvbiBleHByZXNpb25lcyByZWd1bGFyZXMKICAgaHR0cHM6Ly9lcy5zdGFja292ZXJmbG93LmNvbS9xLzY1NTAyLzEyNyAqLwoKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJCgkJZmluYWwgU3RyaW5nIHJlZ2V4ID0gIiwoXCJbXlwiXSpcInxbXixdKikiOwoJCWZpbmFsIFN0cmluZyB0ZXh0ICA9ICIsMTAwMTAyMjIsXCJUaGUgUm95YWwgQmFuayBvZiBTY290bGFuZCwgTmllZGVybGFzc3VuZyBEZXV0c2NobGFuZFwiLDEwMTA1LEJlcmxpbiI7CgkJCgkJZmluYWwgUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKHJlZ2V4KTsKCQlmaW5hbCBNYXRjaGVyIG1hdGNoZXIgPSBwYXR0ZXJuLm1hdGNoZXIoIiwiICsgdGV4dCk7CgkJaW50IG4gPSAwOwoJCQoJCVN5c3RlbS5vdXQucHJpbnRsbigiVGV4dG8gb3JpZ2luYWw6ICIgKyB0ZXh0KTsKCQkKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKCSAgICAgICAgU3lzdGVtLm91dC5wcmludCAgKCJFbGVtZW50byAiICsgKytuICsgIjogIik7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtYXRjaGVyLmdyb3VwKDEpKTsKCQl9Cgl9Cn0=