Класс MatchResult
Класс MatchResult представляет результат успешного поиска
по регулярному выражению. Он содержит информацию о найденном совпадении,
включая саму найденную подстроку, её позицию в исходной строке,
а также группы захвата, если они были определены в регулярном выражении.
Импорт
import kotlin.text.MatchResult
Синтаксис
class MatchResult {
val value: String
val range: IntRange
val groups: MatchGroupCollection
val groupValues: List<String>
fun next(): MatchResult?
fun destructured(): Destructured
}
Пример
Получим результат сопоставления и выведем основную информацию:
val regex = Regex("(\\d+)-(\\w+)")
val input = "123-abc"
val matchResult = regex.find(input)
if (matchResult != null) {
println("Found: ${matchResult.value}")
println("Position: ${matchResult.range}")
println("Groups: ${matchResult.groupValues}")
}
Результат выполнения кода:
Found: 123-abc
Position: 0..6
Groups: [123-abc, 123, abc]
Пример
Получим доступ к группам захвата:
val regex = Regex("(\\d+)-(\\w+)")
val input = "123-abc"
val matchResult = regex.find(input)
if (matchResult != null) {
val wholeMatch = matchResult.groups[0]?.value
val firstGroup = matchResult.groups[1]?.value
val secondGroup = matchResult.groups[2]?.value
println("Whole: $wholeMatch")
println("First group: $firstGroup")
println("Second group: $secondGroup")
}
Результат выполнения кода:
Whole: 123-abc
First group: 123
Second group: abc
Пример
Используем деструктуризацию для получения групп:
val regex = Regex("(\\d+)-(\\w+)")
val input = "123-abc"
val matchResult = regex.find(input)
if (matchResult != null) {
val (num, text) = matchResult.destructured()
println("Number: $num")
println("Text: $text")
}
Результат выполнения кода:
Number: 123
Text: abc
Пример
Найдем все совпадения в строке используя метод next:
val regex = Regex("\\d+")
val input = "a1 b22 c333 d4444"
var matchResult = regex.find(input)
while (matchResult != null) {
println("Found: ${matchResult.value} at position ${matchResult.range}")
matchResult = matchResult.next()
}
Результат выполнения кода:
Found: 1 at position 1..1
Found: 22 at position 4..5
Found: 333 at position 8..10
Found: 4444 at position 13..16
Пример
Используем свойства value и range для получения
информации о найденном совпадении:
val regex = Regex("code")
val input = "Learn code programming"
val matchResult = regex.find(input)
if (matchResult != null) {
println("Matched text: ${matchResult.value}")
println("Start index: ${matchResult.range.first}")
println("End index: ${matchResult.range.last}")
println("Length: ${matchResult.value.length}")
}
Результат выполнения кода:
Matched text: code
Start index: 6
End index: 9
Length: 4