Соответствие регулярных выражений в строке

Я хотел бы извлечь два числа для строк по регулярному выражению "[0-9] +"

var str = "ABcDEFG12345DiFKGLSG938SDsFSd" 

То, что я хочу извлечь, – «12345» и «938». Но я не знаю, как это сделать в Котлине.

Спасибо за помощь

Это должно работать:

 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+") , он будет извлекать цифры из выражения.

Шаблон регулярного выражения, соответствующий вашей строке образца, будет выглядеть так:

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

Чтобы определить группы для извлечения, вам нужно добавить скобки вокруг соответствующих частей этого шаблона:

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

Соответствие и поиск групп в Котлине работает следующим образом:

 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 

Теперь results представляют собой List<String> с тремя записями: [0] содержит все совпадения, [1] содержит «12345», а [2] «938».