Свойство groupCount
Свойство groupCount класса Match возвращает
количество групп захвата в регулярном выражении,
которое было сопоставлено с частью строки.
Свойство доступно только для чтения и возвращает
целое число. Если регулярное выражение не содержит
групп захвата, свойство вернёт 0.
Группы захвата нумеруются начиная с 1,
поэтому количество групп определяет максимально
возможный номер группы.
Синтаксис
match.groupCount
Пример
Давайте получим количество групп захвата для регулярного выражения с двумя группами:
void main()
{
RegExp regExp = RegExp(r'(\d+)-(\d+)');
Match? match = regExp.firstMatch('123-456');
if (match != null) {
print(match.groupCount);
}
}
Результат выполнения кода:
2
Пример
Давайте проверим, что вернёт свойство для регулярного выражения без групп захвата:
void main()
{
RegExp regExp = RegExp(r'\d+');
Match? match = regExp.firstMatch('12345');
if (match != null) {
print(match.groupCount);
}
}
Результат выполнения кода:
0
Пример
Давайте используем groupCount для перебора
всех групп захвата в цикле:
void main()
{
RegExp regExp = RegExp(r'(\w+)-(\w+)-(\w+)');
Match? match = regExp.firstMatch('abcde-12345-xyz');
if (match != null) {
for (int i = 1; i <= match.groupCount; i++) {
print(match.group(i));
}
}
}
Результат выполнения кода:
"abcde"
"12345"
"xyz"