Именовани џепови у регуларним изразима ПХП-а

Рецимо да помоћу preg_match желимо да поделимо датум на дан, месец и годину. Користимо за то џепове:

php<?php
  $str = '2025-10-29';
  $reg = '#(\d{4})-(\d{2})-(\d{2})#';
  
  preg_match($reg, $str, $match);
  var_dump($match); // исписаће ['2025-10-29', '2025', '10', '29']
?>

Као што видите, као резултат добијамо низ, у коме ће на нултом елементу бити цео датум, на првом - година, на другом - месец, на трећем - дан.

Понекад би, међутим, било згодно добити садржај џепова у виду асоцијативног низа. То јесте, у нашем случају било би лепо добити овакав низ:

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

За то у регуларним изразима постоји посебан синтакса. Ево га: (?<name>pattern), где је pattern - регуларни израз, а name - име џепа.

Хајде да препишемо наш регуларни израз за датум преко именованих џепова:

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

Као резултат, добићемо асоцијативни низ, у коме ће кључеви бити имена џепова, a вредности - оно што је у њих упало:

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

Заправо, у низу са резултатом, вредности џепова ће бити доступне и по имену и по редном броју. То јесте, на пример, година ће бити доступна под кључем 'year' и под бројем 1, месец - под кључем 'month' и под бројем 2 и тако даље:

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

Описанa именованa џеповa имају још неколико алтернативних синтакси: (?P<name>pattern) и (?'name'pattern).

Задание 1

Дат je низ са временом:

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

Ставите сате, минуте и секунде у одвојене именоване џепове.

Задание 2

Напишите функцију која у низу са резултатом обрише све нумерисане џепове, оставивши само именоване.