Агульны нумар карманоў у рэгулярках PHP

Разгледзім наступную сітуацыю. Хай у нас ёсць пераменная з годам, які можа змяняцца ад 1990 да 2099. Хай мы хочам атрымліваць апошнія дзве лічбы года ў карман. Напішам адпаведную рэгулярку:

php<?php
  $reg = '#19(9\d)|20(\d\d)#';
?>

Нас, аднак, тут падчэўвае адна нязручнасць. Справа ў тым, што для гадоў мінулага стагоддзя дзве лічбы будуць трапляць у першы карман, а для гадоў другога стагоддзя - у другі. Паглядзім на прыкладах.

Вось першы варыянт:

php<?php
  $str = '1991';
  preg_match($reg, $str, $res);
  var_dump($res); // [1 => '91']
?>

А вось другі варыянт:

php<?php
  $str = '2021';
  preg_match($reg, $str, $res);
  var_dump($res); // [2 => '21']
?>

Хай цяпер мы хочам запісаць знойдзеныя лічбы года ў пераменную. Нас чакае праблема, бо мы не ведаем дакладна, з якім ключом забіраць дадзеныя з кармана:

php<?php
  $year = $res[1]; // патрэбен ключ альбо 1, альбо 2
?>

Можна вырашыць праблему праз умова:

php<?php
  if (!empty($res[1])){
    $year = $res[1];
  } else{
    $year = $res[2];
  }
?>

Аднак, ёсць рашэнне прасцей. Можна выкарыстоўваць спецыяльную каманду (?| ). Усе карманы, якія знаходзяцца ўнутры яе будуць мець адзін нумар.

Давайце выправім нашу рэгулярку

php<?php
  $reg = '#(?|19(9\d)|20(\d\d))#';
?>

І цяпер наш год дакладна будзе ў кармане з нумарам адзін:

php<?php
  $year = $res[1];
?>
Задание 1

Дадзены радкі з датамі, у якіх год можа змяняцца ад 1990 да 2099:

php<?php
  $arr = [
    '31-12-2025',
    '30-11-1995',
    '29-10-1990',
  ];
?>

Для кожнай даты пакладзеце дзень у першы карман, месяц у другі, а апошнія дзве лічбы года - у трэці.