АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
530 of 1310 menu
Бесплатный курс по выкладке сайтов на хостинг. Разбираем все нюансы! Начало 14 октября. Жми для записи!

Класс 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

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