/* Parsear csv con comillas problematicas
https://es.stackoverflow.com/q/65958/127 */
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone
{
{
",codigo,nom,cognom",
",111,michael,salinas",
",222,\"luis\",\"doh, \\”jik\"",
",333,ram,\"Lak\"\"\\\"\"\"\"\\\"\"\"\"\\\"\" , \"\"\\\"\"“one\""
};
final String regex
= ",(\"[^\"]*(?:\"\"[^\"]*)*\"|[^,]+)"; final Pattern pattern = Pattern.compile(regex);
System.
out.
println("Línea: " + line
);
final Matcher m = pattern.matcher(line);
while (m.find()) {
System.
out.
println(" Elemento: " + m.
group(1)); }
}
}
}
LyogUGFyc2VhciBjc3YgY29uIGNvbWlsbGFzIHByb2JsZW1hdGljYXMKICAgaHR0cHM6Ly9lcy5zdGFja292ZXJmbG93LmNvbS9xLzY1OTU4LzEyNyAqLwoKaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJZmluYWwgU3RyaW5nW10gY3N2ID0gIG5ldyBTdHJpbmdbXSB7CgkJCSIsY29kaWdvLG5vbSxjb2dub20iLAoJCQkiLDExMSxtaWNoYWVsLHNhbGluYXMiLAoJCQkiLDIyMixcImx1aXNcIixcImRvaCwgXFzigJ1qaWtcIiIsCgkJCSIsMzMzLHJhbSxcIkxha1wiXCJcXFwiXCJcIlwiXFxcIlwiXCJcIlxcXCJcIiAsIFwiXCJcXFwiXCLigJxvbmVcIiIKCQl9OwoJCQoJCWZpbmFsIFN0cmluZyByZWdleCA9ICIsKFwiW15cIl0qKD86XCJcIlteXCJdKikqXCJ8W14sXSspIjsKCQlmaW5hbCBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwoJCQoJCWZvciAoU3RyaW5nIGxpbmUgOiBjc3YpIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJMw61uZWE6ICIgKyBsaW5lKTsKCQkJCgkJCWZpbmFsIE1hdGNoZXIgbSA9IHBhdHRlcm4ubWF0Y2hlcihsaW5lKTsKCQkJCgkJCXdoaWxlIChtLmZpbmQoKSkgewoJCQkgICAgU3lzdGVtLm91dC5wcmludGxuKCIgIEVsZW1lbnRvOiAiICsgbS5ncm91cCgxKSk7CgkJCX0KCQl9Cgl9Cn0=
Línea: ,codigo,nom,cognom
Elemento: codigo
Elemento: nom
Elemento: cognom
Línea: ,111,michael,salinas
Elemento: 111
Elemento: michael
Elemento: salinas
Línea: ,222,"luis","doh, \”jik"
Elemento: 222
Elemento: "luis"
Elemento: "doh, \”jik"
Línea: ,333,ram,"Lak""\""""\""""\"" , ""\""“one"
Elemento: 333
Elemento: ram
Elemento: "Lak""\""""\""""\"" , ""\""“one"