Capture Groups bei der Suche mit regulären Ausdrücken in PHP
Nehmen wir an, wir haben einen String, der eine Domain enthält:
<?php
$str = 'eee site.ru bbb';
?>
Lassen Sie uns diese Domain finden und sie in Teile aufteilen: den Domainnamen von der Zone trennen. Dafür verwenden wir spezielle Capture Groups regulärer Ausdrücke.
Capture Groups sind Elemente eines Arrays, in die Teile des von der Regex Gefundenen gelegt werden können. In unserem Fall können wir im ersten Capture Group den Domainnamen ablegen und im zweiten - seine Zone.
Lassen Sie uns das tun. Schreiben wir zunächst eine Regex, die die Domain im String findet:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Lassen Sie uns nun in unserer Regex kennzeichnen, welche Teile in welchen Capture Group landen sollen. Dies geschieht mit runden Klammern. Lassen Sie uns damit den Teil der Regex, der den Domainnamen sucht, und den Teil, der die Domainzone sucht, hervorheben:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Nun geben wir in der Funktion preg_match
als dritten Parameter eine Variable (beliebiger Name) an:
<?php
preg_match($reg, $str, $res);
?>
In die angegebene Variable wird ein Array mit den gefundenen Capture Groups eingefügt. Dabei liegt im Nullelement des Arrays der gefundene String, im ersten Element - der erste Capture Group, im zweiten Element - der zweite Capture Group und so weiter:
<?php
preg_match($reg, $str, $res);
var_dump($res); // gibt aus ['site.ru', 'site', 'ru']
?>
Gegeben ist ein String mit einem Datum:
<?php
$str = '2025-12-31';
?>
Legen Sie Jahr, Monat und Tag in separate Capture Groups.
Gegeben ist ein String mit einem Dateinamen:
<?php
$str = 'index.html';
?>
Legen Sie den Dateinamen und seine Erweiterung in separate Capture Groups.