Свойство groupValues
Свойство groupValues возвращает список строк, соответствующих группам захвата
в результате сопоставления с регулярным выражением. Нулевой элемент списка содержит
полное совпадение, а последующие элементы - содержимое захваченных групп.
Синтаксис
val groupValues: List<String>
Пример
Найдем группы в строке "John Doe, age 30" с помощью регулярного выражения:
val regex = Regex("(\\w+) (\\w+), age (\\d+)")
val matchResult = regex.find("John Doe, age 30")
val groups = matchResult?.groupValues
if (groups != null) {
for (group in groups) {
println(group)
}
}
Результат выполнения кода:
String "John Doe, age 30"
String "John"
String "Doe"
String "30"
Пример
Использование groupValues с именованными группами:
val regex = Regex("(?<first>\\w+) (?<last>\\w+), age (?<age>\\d+)")
val matchResult = regex.find("Alice Smith, age 25")
val groups = matchResult?.groupValues
if (groups != null) {
println(groups["first"])
println(groups["last"])
println(groups["age"])
}
Результат выполнения кода:
String "Alice"
String "Smith"
Int 25
Пример
Проверка наличия групп перед обращением к ним:
val regex = Regex("(\\d{3})-(\\d{2})")
val input = "123-45"
val matchResult = regex.find(input)
if (matchResult != null && matchResult.groupValues.size >= 3) {
println("Area code: ${matchResult.groupValues[1]}")
println("Group code: ${matchResult.groupValues[2]}")
} else {
println("No match or not enough groups")
}
Результат выполнения кода:
String "Area code: 123"
String "Group code: 45"