Карманы при поиске в Kotlin
Часто при поиске совпадения удобно разложить подстроку на так называемые карманы. Они представляют собой способ разбить найденное на отдельные части. Для их использования нужно заключить часть регулярки в круглые скобки.
Пусть у нас есть следующая строка:
val txt = "123 456"
Разложим подстроки с числами по карманам. Для этого напишем следующую регулярку:
val res = Regex("(\\d+) (\\d+)").find(txt)
В результате мы получим объект MatchResult. В
его элементе с индексом 1 будет
лежать первый карман, в элементе с индексом
2 - второй карман, а в элементе с
индексом 0 - все найденное (так
называемый нулевой карман):
println(res?.groupValues[0]) # '123 456' - найденное
println(res?.groupValues[1]) # '123' - 1 карман
println(res?.groupValues[2]) # '456' - 2 карман
Дана строка, содержащая домен:
val txt = "sss domain.ru zzz"
Найдите этот домен и положите его имя в первый карман, а зону - во второй.
Дана строка, содержащая дату:
val txt = "31.12.2025"
Положите день в первый карман, месяц - во второй, а год - в третий.