⊗ppPmRgVA 258 of 447 menu

Búsqueda hacia adelante en expresiones regulares de PHP

A veces necesitamos resolver una tarea de este tipo: encontrar la cadena 'aaa' y reemplazarla por '!', pero solo si después de 'aaa' hay 'x', y sin reemplazar la propia 'x'. Si intentamos resolver la tarea 'directamente', no tendremos éxito:

<?php preg_replace('#aaax#', '!', 'aaax'); // será '!', pero debería ser '!x' ?>

Para resolver la tarea, se necesita una forma de decir que 'x' no debe ser reemplazada. Esto se hace usando corchetes especiales (?= ), que solo verifican, pero no consumen caracteres.

Estos corchetes se llaman búsqueda positiva hacia adelante. Positiva - porque 'x' (en nuestro caso) debe estar presente - solo entonces ocurrirá el reemplazo.

Apliquemos estos corchetes para resolver nuestra tarea:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // retornará '!x' ?>

También existe la búsqueda negativa hacia adelante - (?! ) - que, por el contrario, dice que algo no debe estar presente. En el siguiente ejemplo el reemplazo ocurrirá solo si después de 'aaa' no hay 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // retornará '!b' ?>

Se da una cadena que contiene nombres de funciones:

<?php $str = 'func1() func2() func3()'; ?>

Obtenga un array con los nombres de las funciones de la cadena.

Se da una cadena con una etiqueta:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

Obtenga un array con los nombres de los atributos de esta etiqueta.

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