Regex Match en una string

Me gustaría extraer dos numbers para una cadena por expresiones regulares "[0-9] +"

var str = "ABcDEFG12345DiFKGLSG938SDsFSd" 

Lo que quiero extraer es "12345" y "938". Pero no estoy seguro de cómo hacerlo en Kotlin.

Gracias por ayudar

Esto debería funcionar:

 import java.util.regex.Matcher import java.util.regex.Pattern fun main(args:Array<String>) { val p = Pattern.compile("\\d+") val m = p.matcher("ABcDEFG12345DiFKGLSG938SDsFSd") while (m.find()) { println(m.group()) } } 

Pattern.compile("\\d+") , extraerá los dígitos de la expresión.

El patrón de expresiones regulares para que coincida con su cadena de muestra sería:

 [a-zA-Z]+[0-9]+[a-zA-Z]+[0-9]+[a-zA-Z]+ 

Para definir los grupos a extraer, debe agregar corchetes alnetworkingedor de las partes correspondientes de ese patrón:

 [a-zA-Z]+([0-9]+)[a-zA-Z]+([0-9]+)[a-zA-Z]+ 

Coincidir y encontrar los grupos en Kotlin funciona así:

 val pattern = Regex("[a-zA-Z]+([0-9]+)[a-zA-Z]+([0-9]+)[a-zA-Z]+") val str = "ABcDEFG12345DiFKGLSG938SDsFSd" val results = pattern.matchEntire(str)?.groupValues 

Ahora los results son List<String> con tres inputs: [0] contiene la coincidencia completa, [1] contiene "12345" y [2] contiene "938".

  • Una expresión regular que reconocería a / * ... * / note
  • groupValues ​​solo devuelve la última aparición de patrón repetitivo
  • Expresión regular para unir caracteres al principio de la línea solamente
  • Regex: coincide con palabras que no son cadenas