PHP 정규식을 통한 모든 캡처 그룹 매치
함수 preg_match_all를 사용하면
발견된 모든 매치를 캡처 그룹으로 나눌 수 있습니다.
어떻게 하는지 살펴보겠습니다.
예를 들어, 도메인 문자열이 있다고 가정해 봅시다:
<?php
$str = 'site.ru site123.com my-site.net';
?>
도메인을 검색하는 정규 표현식을 작성하고, 이름과 존(zone)을 별도의 캡처 그룹으로 분리해 봅시다:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
결과는 함수의 세 번째 매개변수에 들어갑니다:
<?php
preg_match_all($reg, $str, $res);
var_dump($res);
?>
결과적으로 2차원 배열을 얻게 됩니다. 이 배열의 0번째 요소에는 0번 캡처 그룹의 내용(즉, 전체 정규식에 매치된 부분)이 들어가고, 두 번째 요소에는 첫 번째 캡처 그룹의 내용이 들어가는 식입니다:
<?php
[
['site.ru', 'site123.com', 'my-site.net'],
['site', 'site123', 'my-site'],
['ru', 'com', 'net'],
]
?>
날짜 문자열이 주어져 있습니다:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
모든 날짜를 찾고, 연도, 월, 일을 별도의 캡처 그룹으로 분리하세요.