Alle Übereinstimmungen in Gruppen mittels regulärer Ausdrücke in PHP

Mit der Funktion preg_match_all kann man alle gefundenen Übereinstimmungen in Gruppen aufteilen. Sehen wir uns an, wie das gemacht wird.

Nehmen wir zum Beispiel einen String mit Domains:

php<?php
  $str = 'site.ru site123.com my-site.net';
?>

Schreiben wir einen regulären Ausdruck, um die Domain zu finden und den Namen und die Zone in separate Gruppen aufzuteilen:

php<?php
  $reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>

Das Ergebnis landet im dritten Parameter der Funktion:

php<?php
  preg_match_all($reg, $str, $res);
  var_dump($res);
?>

Als Ergebnis erhalten wir ein zweidimensionales Array. In das nullte Element dieses Arrays kommen die Inhalte der nullten Gruppen (also das, was auf den gesamten regulären Ausdruck passt), in das zweite Element - die Inhalte der ersten Gruppen und so weiter:

php<?php
  [
    ['site.ru', 'site123.com', 'my-site.net'],
    ['site', 'site123', 'my-site'],
    ['ru', 'com', 'net'],
  ]
?>
Задание 1

Gegeben ist ein String mit Datumsangaben:

php<?php
  $str = '2023-10-29 2024-11-30 2025-12-31';
?>

Finden Sie alle Datumsangaben und teilen Sie Jahr, Monat und Tag in separate Gruppen auf.