⊗ppPmRgNPB 252 of 447 menu

Parênteses não capturadores em expressões regulares do PHP

Os parênteses () desempenham duas funções - agrupamento de caracteres e a função de captura (grupo de captura). E o que fazer se precisamos agrupar, mas não capturar? Para resolver esse problema, foram criados os parênteses não capturadores (?: ) - eles agrupam, mas não capturam.

Exemplo

No exemplo a seguir, os primeiros parênteses são necessários para agrupamento, e os segundos - para captura. No entanto, ambos os tipos de parênteses salvam dados em grupos de captura:

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

Como resultado, nossos grupos de captura terão o seguinte:

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

Exemplo

Vamos fazer com que o primeiro par de parênteses apenas agrupe, mas não capture:

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

Como resultado, nosso número estará no primeiro grupo de captura:

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

Tarefas práticas

Dadas as substrings, divididas em duas partes por uma quantidade arbitrária de pares $@:

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

Encontre cada uma dessas substrings e para cada substring encontrada, coloque no primeiro grupo de captura o que vem antes do separador, e no segundo grupo de captura - o que vem depois do separador.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar