Named Capturing Groups Inside PHP Regex

Let's recall how we used capturing groups in the regular expression itself:

php<?php
  $res = preg_replace('#([a-z])\1#', '!', $str);
?>

Sometimes there are situations when it is more convenient to refer to a group not by its number, but by its name. For this, we need to give the group a name:

php<?php
  $res = preg_replace('#(?<letter>[a-z])#', '!', $str);
?>

Now we can refer to this group via the syntax \k<name>, like this:

php<?php
  $res = preg_replace('#(?<letter>[a-z])\k<letter>#', '!', $str);
?>

The described named groups also have several alternative syntaxes: (?P=name), \k'name', \k{name}.

Задание 1

Given a string:

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

Find all substrings with time, in which the hour matches the seconds.