Imenovani capture grupe (karmani) u PHP regularnim izrazima

Recimo da pomoću preg_match želimo podeliti datum na dan, mesec i godinu. Koristićemo za ovo capture grupe (karmane):

php<?php
  $str = '2025-10-29';
  $reg = '#(\d{4})-(\d{2})-(\d{2})#';
  
  preg_match($reg, $str, $match);
  var_dump($match); // ispisaće ['2025-10-29', '2025', '10', '29']
?>

Kao što vidite, kao rezultat dobijamo niz, u kojem će na nultom elementu biti ceo datum, na prvom - godina, na drugom - mesec, na trećem - dan.

Ponekad, međutim, bilo bi zgodno dobiti sadržaj capture grupa (karmana) kao asocijativni niz. To jest u našem slučaju bilo bi lepo dobiti ovakav niz:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29'
]

Za ovo u regularnim izrazima postoji specijalna sintaksa. Evo je: (?<name>pattern), gde je pattern - regularni izraz, a name - ime capture grupe (karmana).

Hajde da prepišemo naš regularni izraz za datum preko imenovanih capture grupa (karmana):

php<?php
  $str = '2025-10-29';
  $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
  
  preg_match($reg, $str, $match);
  var_dump($match);
?>

Kao rezultat ćemo dobiti asocijativni niz, u kojem će ključevi biti imena capture grupa (karmana), a vrednosti - ono što je u njih upalo:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29',
]

U stvari, u nizu sa rezultatom vrednosti capture grupa (karmana) će biti dostupne i po imenu, i po rednom broju. To jest, na primer, godina će biti dostupna po ključu 'year' i po broju 1, mesec - po ključu 'month' i po broju 2 i tako dalje:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29',
  
  1       => '2025',
  2       => '10',
  3       => '29'
]

Opisane imenovane capture grupe (karmani) imaju još nekoliko alternativnih sintaksi: (?P<name>pattern) i (?'name'pattern).

Задание 1

Dat je string sa vremenom:

php<?php
  $str = '12:59:59';
?>

Stavite sate, minute i sekunde u zasebne imenovane capture grupe (karmane).

Задание 2

Napišite funkciju koja u nizu sa rezultatom obriše sve numerisane capture grupe (karmane), ostavivši samo imenovane.