Kotlin: ¿Cómo get un grupo de captura de la primera línea que coincida?

  1. Comenzando con una líneaSecuencia
  2. Me gustaría probar si un Regex coincide, y si es así, get el primer partido
  3. Además, me gustaría devolver un grupo de captura de ese partido Regex

Si no me importa, haría una "primera" en la líneaSecuencia, y si existiera, vuelva a ejecutar la expresión regular.

val possibleMatch = input.lineSequence().first { myRegex.matches(it) } 

… pero quiero ser genial y no tener que volver a ejecutar la expresión regular. ¿Debo usar un map para un MatchGroup y filtrar nulos? Se siente más detallado de lo que podría ser …

 input.lineSequence() .mapNotNull { myRegex.find(it) } .map { it.groupValues[1] } .first() 

    Puede simplificarlo a single .mapNotNull { ... } :

     input.lineSequence() .mapNotNull { regex.find(it)?.groupValues?.get(1) } .first() 

    Si .find(it) devuelve null , el valor se eliminará de la secuencia y, de lo contrario, se procesará en la misma llamada.