НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
530 of 1310 menu

Класс MatchGroupCollection

Класс MatchGroupCollection представляет собой коллекцию групп совпадения, полученных в результате успешного сопоставления регулярного выражения со строкой. Каждый элемент коллекции является объектом типа MatchGroup, который содержит текст совпадения и диапазон индексов в исходной строке. Коллекция индексируется, начиная с 0, где индекс 0 соответствует полному совпадению, а последующие индексы - группам в регулярном выражении.

Импорт

import kotlin.text.MatchGroupCollection

Синтаксис

interface MatchGroupCollection : Collection<MatchGroup?>

Свойства

Класс MatchGroupCollection наследует все свойства интерфейса Collection:

val size: Int

Методы

Основные методы, доступные в MatchGroupCollection:

operator fun get(index: Int): MatchGroup? fun isEmpty(): Boolean operator fun iterator(): Iterator<MatchGroup?> fun contains(element: MatchGroup?): Boolean fun containsAll(elements: Collection<MatchGroup?>): Boolean

Пример

Получение групп совпадения из результата регулярного выражения:

val pattern = Regex("(\\d+)-(\\w+)") val input = "123-abc" val matchResult = pattern.find(input) if (matchResult != null) { val groups: MatchGroupCollection = matchResult.groups println("Total groups: ${groups.size}") for (i in 0 until groups.size) { val group = groups[i] println("Group $i: ${group?.value} (range: ${group?.range})") } }

Результат выполнения кода:

Total groups: 3 Group 0: 123-abc (range: 0..6) Group 1: 123 (range: 0..2) Group 2: abc (range: 4..6)

Пример

Проверка наличия групп и доступ к их значениям:

val pattern = Regex("(\\d+)-(\\w+)") val input = "456-def" val matchResult = pattern.find(input) if (matchResult != null) { val groups = matchResult.groups if (!groups.isEmpty() && groups.size > 1) { val fullMatch = groups[0]?.value val firstGroup = groups[1]?.value val secondGroup = groups[2]?.value println("Full match: $fullMatch") println("First group: $firstGroup") println("Second group: $secondGroup") } }

Результат выполнения кода:

Full match: 456-def First group: 456 Second group: def

Пример

Итерация по группам совпадения с помощью цикла:

val pattern = Regex("(\\w+)\\s(\\w+)") val input = "John Doe" val matchResult = pattern.find(input) if (matchResult != null) { var index = 0 for (group in matchResult.groups) { if (group != null) { println("Group $index: '${group.value}' at position ${group.range}") } index++ } }

Результат выполнения кода:

Group 0: 'John Doe' at position 0..7 Group 1: 'John' at position 0..3 Group 2: 'Doe' at position 5..7

Пример

Обработка необязательных групп, которые могут отсутствовать:

val pattern = Regex("(\\d+)(?:-(\\w+))?") val input = "789" val matchResult = pattern.find(input) if (matchResult != null) { val groups = matchResult.groups for (i in 0 until groups.size) { val group = groups[i] if (group == null) { println("Group $i: null") } else { println("Group $i: ${group.value}") } } }

Результат выполнения кода:

Group 0: 789 Group 1: 789 Group 2: null

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить