/*
Java Split excluyendo rango
https://es.stackoverflow.com/q/138135/127
*/
import java.io.*;import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
final String regex
= "(\\d+)(?:\\[(\\d+)Y,(\\d+)W,(\\d+)H])?"; final String texto
= "1,2,3,20[4Y,2W,4H] , 10[2Y,1W,5H],4 , 5[10Y,20W,5H]";
// así se compila siempre un regex
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(texto);
//y así se buscan siempre todas las coincidencias
while (matcher.find()) {
//asignamos el valor capturado por cada grupo
String valor
= matcher.
group(1); String rangoY
= matcher.
group(2); String rangoW
= matcher.
group(3); String rangoH
= matcher.
group(4);
//imprimimos en consola
System.
out.
printf("Valor: %3s - Y: %4s - W: %4s - H: %4s%n",valor,rangoY,rangoW,rangoH
); }
}
}
LyoKCUphdmEgU3BsaXQgZXhjbHV5ZW5kbyByYW5nbwoJaHR0cHM6Ly9lcy5zdGFja292ZXJmbG93LmNvbS9xLzEzODEzNS8xMjcKKi8KCmltcG9ydCBqYXZhLmlvLio7aW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWZpbmFsIFN0cmluZyByZWdleCA9ICIoXFxkKykoPzpcXFsoXFxkKylZLChcXGQrKVcsKFxcZCspSF0pPyI7CgkJZmluYWwgU3RyaW5nIHRleHRvID0gIjEsMiwzLDIwWzRZLDJXLDRIXSAsIDEwWzJZLDFXLDVIXSw0ICwgNVsxMFksMjBXLDVIXSI7CgkJCgkJLy8gYXPDrSBzZSBjb21waWxhIHNpZW1wcmUgdW4gcmVnZXgKCQlmaW5hbCBQYXR0ZXJuIHBhdHRlcm4gPSBQYXR0ZXJuLmNvbXBpbGUocmVnZXgpOwoJCWZpbmFsIE1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcih0ZXh0byk7CgkJCgkJLy95IGFzw60gc2UgYnVzY2FuIHNpZW1wcmUgdG9kYXMgbGFzIGNvaW5jaWRlbmNpYXMKCQl3aGlsZSAobWF0Y2hlci5maW5kKCkpIHsKCQkgICAgLy9hc2lnbmFtb3MgZWwgdmFsb3IgY2FwdHVyYWRvIHBvciBjYWRhIGdydXBvCgkJICAgIFN0cmluZyB2YWxvciAgPSBtYXRjaGVyLmdyb3VwKDEpOwoJCSAgICBTdHJpbmcgcmFuZ29ZID0gbWF0Y2hlci5ncm91cCgyKTsKCQkgICAgU3RyaW5nIHJhbmdvVyA9IG1hdGNoZXIuZ3JvdXAoMyk7CgkJICAgIFN0cmluZyByYW5nb0ggPSBtYXRjaGVyLmdyb3VwKDQpOwoJCQoJCSAgICAvL2ltcHJpbWltb3MgZW4gY29uc29sYQoJCSAgICBTeXN0ZW0ub3V0LnByaW50ZigiVmFsb3I6ICUzcyAtIFk6ICU0cyAtIFc6ICU0cyAtIEg6ICU0cyVuIix2YWxvcixyYW5nb1kscmFuZ29XLHJhbmdvSCk7CgkJfQoJfQp9