He siguientes líneas de códigoComo llegar grupo similar de expresiones regulares valores
String time = "14:35:59.99";
String timeRegex = "(([01][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])(.([0-9]{1,3}))?";
String hours, minutes, seconds, milliSeconds;
Pattern pattern = Pattern.compile(timeRegex);
Matcher matcher = pattern.matcher(time);
if (matcher.matches()) {
hours = matcher.replaceAll("$1");
minutes = matcher.replaceAll("$4");
seconds = matcher.replaceAll("$5");
milliSeconds = matcher.replaceAll("$7");
}
Me estoy haciendo horas, minutos, segundos y milisegundos utilizando el método matcher.replace
y referencias anteriores de grupos de expresiones regulares. ¿Hay algún método mejor para obtener valor de los grupos regex? Probé
hours = matcher.group(1);
pero desencadena la siguiente excepción:
java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:477)
at com.abnamro.cil.test.TimeRegex.main(TimeRegex.java:70)
Me estoy perdiendo algo aquí?
Solo para estar seguro, todavía está revisando 'matcher.matches() == True' primero, ¿verdad? –