กลุ่มจับชื่อภายใน Regex ของ PHP

จำได้ไหมว่าเราใช้กลุ่มจับใน นิพจน์ทั่วไปได้อย่างไร:

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

บางครั้งมีสถานการณ์ที่สะดวกกว่าในการอ้างอิง ถึงกลุ่มจับไม่ใช่ด้วยหมายเลขของมัน แต่ด้วยชื่อ สำหรับ สิ่งนี้เราจำเป็นต้องตั้งชื่อให้กับกลุ่มจับ:

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

ตอนนี้เราสามารถอ้างอิงถึงกลุ่มจับนี้ ผ่านไวยากรณ์ \k<name> ได้ดังนี้:

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

กลุ่มจับชื่อที่อธิบายไว้ยังมี ไวยากรณ์ทางเลือกอีกหลายแบบ: (?P=name), \k'name', \k{name}

Задание 1

กำหนดสตริง:

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

ค้นหาสตริงย่อยทั้งหมดที่เป็นเวลาซึ่ง ชั่วโมงตรงกับวินาที