Programación‎ > ‎PHP‎ > ‎

Expresiones Regulares - LookAround

LookAround

Los lookaround son constructores en la expresiones regulares llamados lookahead y lookbehind, en conjuntos son llamados lookaround, que la característica de esto es que no avanzan en el texto.

Lookahead

Los lookahead buscan hacia adelante por así decirlo, existen dos constructores que son:
(?=regexp)
(?!regexp)

El primero sirve para verificar y el segundo para negar... Ejemplo:
<?php
$texto = 'Hola mundo';
if(preg_match('/H(?=ola)ola/', $texto))
{
  echo "Si";
}
 
?>
Salida:

Si

Como se puede observar, afirmo que después de H, exista la palabra ola, pero este no avanza en el texto así que puedo seguir con la expresión regular.

Ejemplo del constructor de negación:
<?php
$texto = 'Hola mundo';
if(preg_match('/H(!=y)ola/', $texto))
{
  echo "Si";
}
 
?>
En este caso, afirmo que después de la letra H, no debe seguir una y también vemos que este no avanza en el texto.

Lookbehind

Los lookbehind miran/buscan hacia atrás,  existen dos constructores que son:
(?<=regexp)
(?<!regexp)

El primero de ellos sirve para afirmar y el segundo para negar y estos no avanzan en el texto. 
ejemplo:

<?php
$texto = 'Hola mundo';
if(preg_match('/(?<=mund)o/', $texto))
{
  echo "Si";
}
 
?>

Salida:
Si

Estoy afirmando que antes de la letra o existe la palabra mund, por esto se dice que mira hacia atrás.

Ejemplo del lookbehind de negación:

<?php
$texto = 'Hola mundo';
if(preg_match('/(?<!o)o/', $texto))
{
  echo "Si";
}
 
?>

En este caso estoy negando que antes de la letra o exista la letra o y como lo hemos mencionado estos constructores no avanzan en el texto.
Comments