PHP 정규식을 통한 모든 캡처 그룹 매치

함수 preg_match_all를 사용하면 발견된 모든 매치를 캡처 그룹으로 나눌 수 있습니다. 어떻게 하는지 살펴보겠습니다.

예를 들어, 도메인 문자열이 있다고 가정해 봅시다:

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

도메인을 검색하는 정규 표현식을 작성하고, 이름과 존(zone)을 별도의 캡처 그룹으로 분리해 봅시다:

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

결과는 함수의 세 번째 매개변수에 들어갑니다:

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

결과적으로 2차원 배열을 얻게 됩니다. 이 배열의 0번째 요소에는 0번 캡처 그룹의 내용(즉, 전체 정규식에 매치된 부분)이 들어가고, 두 번째 요소에는 첫 번째 캡처 그룹의 내용이 들어가는 식입니다:

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

날짜 문자열이 주어져 있습니다:

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

모든 날짜를 찾고, 연도, 월, 일을 별도의 캡처 그룹으로 분리하세요.