⊗ppPmRgNPB 252 of 447 menu

PHP 정규식의 비캡처 그룹

괄호 ()는 두 가지 기능을 수행합니다 - 문자 그룹화와 캡처 그룹 기능입니다. 그런데 그룹화는 필요하지만 캡처는 하고 싶지 않다면 어떻게 해야 할까요? 이러한 문제를 해결하기 위해 특별한 비캡처 그룹 (?: )이 만들어졌습니다. 이것은 그룹화는 하지만 캡처하지 않습니다.

예시

다음 예시에서 첫 번째 괄호는 그룹화를 위해 필요하고, 두 번째 괄호는 캡처를 위해 필요합니다. 그러나 두 괄호 모두 데이터를 캡처합니다:

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

결과적으로 우리의 캡처 그룹에는 다음과 같은 데이터가 담기게 됩니다:

<?php var_dump($res[0]); // 'abab123' 출력 var_dump($res[1]); // 'ab' 출력 var_dump($res[2]); // '123' 출력 ?>

예시

첫 번째 괄호 쌍이 그룹화만 하고 캡처하지 않도록 만들어 봅시다:

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

결과적으로 첫 번째 캡처 그룹에는 우리의 숫자가 담기게 됩니다:

<?php var_dump($res[1]); // '123' 출력 ?>

실습 문제

임의의 수의 $@ 쌍으로 두 부분으로 나뉜 부분 문자열이 주어집니다:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

각각의 이러한 부분 문자열을 찾고, 발견된 각 부분 문자열에 대해 구분자 앞에 있는 것을 첫 번째 캡처 그룹에, 구분자 뒤에 있는 것을 두 번째 캡처 그룹에 넣으세요.

한국어
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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부