⊗ppPmRgNP 255 of 447 menu

PHP 정규 표현식의 명명된 캡처 그룹

preg_match를 사용하여 날짜를 일, 월, 연도로 분해하고자 한다고 가정해봅시다. 이를 위해 캡처 그룹을 사용하겠습니다:

<?php $str = '2025-10-29'; $reg = '#(\d{4})-(\d{2})-(\d{2})#'; preg_match($reg, $str, $match); var_dump($match); // ['2025-10-29', '2025', '10', '29']을 출력합니다 ?>

보시다시피, 결과는 배열로 얻어지며, 첫 번째(인덱스 0) 요소에는 전체 날짜가, 두 번째(인덱스 1)에는 연도가, 세 번째(인덱스 2)에는 월이, 네 번째(인덱스 3)에는 일이 들어갑니다.

그러나 때로는 캡처 그룹의 내용을 연관 배열로 얻는 것이 편리할 때가 있습니다. 즉, 이 경우 다음과 같은 배열을 얻는 것이 좋을 것입니다:

[ 'year' => '2025', 'month' => '10', 'day' => '29' ]

이를 위해 정규 표현식에는 특별한 문법이 존재합니다. 바로 이 문법입니다: (?<name>pattern), 여기서 pattern는 정규 표현식 패턴이고, name 는 캡처 그룹의 이름입니다.

날짜에 대한 우리의 정규 표현식을 명명된 캡처 그룹을 사용하여 다시 작성해 보겠습니다:

<?php $str = '2025-10-29'; $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#'; preg_match($reg, $str, $match); var_dump($match); ?>

결과는 캡처 그룹의 이름이 키가 되고, 캡처된 내용이 값이 되는 연관 배열이 됩니다:

[ 'year' => '2025', 'month' => '10', 'day' => '29', ]

사실 결과 배열에서 캡처 그룹의 값들은 이름과 순차적인 번호 모두로 접근할 수 있습니다. 즉, 예를 들어 연도는 키 'year'와 번호 1로 접근할 수 있으며, 월은 키 'month' 와 번호 2로 접근할 수 있고, 나머지도 마찬가지입니다:

[ 'year' => '2025', 'month' => '10', 'day' => '29', 1 => '2025', 2 => '10', 3 => '29' ]

설명된 명명된 캡처 그룹은 몇 가지 대체 문법도 가지고 있습니다: (?P<name>pattern)(?'name'pattern).

시간 문자열이 주어졌습니다:

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

시, 분, 초를 각각 별도의 명명된 캡처 그룹에 저장하세요.

결과 배열에서 번호가 매겨진 모든 캡처 그룹을 삭제하고 명명된 캡처 그룹만 남기는 함수를 작성하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부