⊗ppPmRgNPB 252 of 447 menu

Paréntesis no capturadores en expresiones regulares de PHP

Los paréntesis () realizan dos funciones: agrupar caracteres y la función de captura. Pero, ¿qué hacemos si necesitamos agrupar, pero sin capturar? Para resolver este problema se crearon los paréntesis no capturadores (?: ) - agrupan, pero no capturan.

Ejemplo

En el siguiente ejemplo, los primeros paréntesis los necesitamos para agrupar, y los segundos - para capturar. Sin embargo, ambos tipos de paréntesis guardan datos en la captura:

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

Como resultado, en nuestras capturas tendremos lo siguiente:

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

Ejemplo

Hagamos que el primer par de paréntesis solo agrupe, pero no capture:

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

Como resultado, en la primera captura estará nuestro número:

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

Tareas prácticas

Tenemos subcadenas, divididas en dos partes por una cantidad arbitraria de pares $@:

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

Encuentra cada una de estas subcadenas y para cada subcadena encontrada, guarda en la primera captura lo que está antes del separador, y en la segunda captura - lo que está después del separador.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar