Tengo que volver a escribir una parte de un programa C#/.NET existente usando Java. No soy tan fluido en Java y me falta algo manejando expresiones regulares y solo quería saber si me falta algo o si Java simplemente no proporciona esa característica.Capturas Regex en Java como en C#
que tienen datos como
2011:06:05 15:50\t0.478\t0.209\t0.211\t0.211\t0.205\t-0.462\t0.203\t0.202\t0.212
El patrón de expresión que estoy usando el siguiente aspecto:
?(\d{4}:\d{2}:\d{2} \d{2}:\d{2}[:\d{2}]?)\t((-?\d*(\.\d*)?)\t?){1,16}
En .NET que puede acceder a los valores después de contrastar el uso de match.Group[3].Captures[i]
.
En Java no he encontrado nada de eso. matcher.group(3)
simplemente devuelve una cadena vacía.
¿Cómo puedo lograr un comportamiento como el que estoy acostumbrado a utilizar desde C#?
Los valores después qué? –
Debería ser lo mismo. Compila tu patrón, combina, eso es todo. java regex es solo normal regex. Tengo la tentación de decir "verifique su entrada", etc. – Bohemian
El problema es que al hacer un ajuste de grupo de valores múltiples, '(algo) *' o '(algo) {1,16}', Java solo devuelve el ÚLTIMO artículo en el ajuste. Así que supongo que en su caso, el grupo 1 es '2011: 06: 05 15: 50' y el grupo 2 es' 0.212' y eso es todo. – toto2