Uso avanzado de expresiones regulares en PHP

Interesante y completo tutorial en el que se nos explica usos de las expresiones regulares que normalmente no solemos tener en cuenta:

Añadir comentarios

preg_match("/^
    (1[-\s.])?	# optional '1-', '1.' or '1'
    ( \( )?		# optional opening parenthesis
    \d{3}		# the area code
    (?(2) \) )	# if there was opening parenthesis, close it
    [-\s.]?		# followed by '-' or '.' or space
    \d{3}		# first 3 digits
    [-\s.]?		# followed by '-' or '.' or space
    \d{4}		# last 4 digits
  $/x",$number);

Callbacks

$template = preg_replace_callback('/\[(.*)\]/','my_callback',$template);  
function my_callback($matches) {  
  /* codigo */
}

‘Codicia’ de la regexp

$html = 'Hello World!';  
// note the ?'s after the *'s  
if (preg_match_all('/.*?<\/a>/',$html,$matches)) {  
  print_r($matches);  
}

Prefijos y sufijos

$pattern = '/foo(?=bar)/'; 
$pattern = '/foo(?!bar)/'; 
$pattern = '/(?

Condicionales

// if it begins with 'q', it must begin with 'qu'  
// else it must begin with 'f'  
$pattern = '/^(?(?=q)qu|f)/';

Subpatrones

preg_match('/(?PH.*) (?Pf.*)(?Pb.*)/', 'Hello foobar', $matches);  
echo "f* => " . $matches['fstar']; // prints 'f* => foo'  
echo "b* => " . $matches['bstar']; // prints 'b* => bar' 

Advanced Regular Expression Tips and Techniques

Expresiones regulares con filtros en PHP

Buena alternativa para validar variables usando expresiones regulares usando filtros:

  • Validar números reales
$values= array(10.75, '10.75', -1234.5678, 'This is a string', array());
$filteredValues = filter_var($values, FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY);
  • Validar expresiones regulares
if(filter_var($value, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => "/^G(.+)/")))) {
// Lo que sea
}
  • Validar URLs
$url = 'http://www.devshed.com';
if(filter_var($url, FILTER_VALIDATE_URL)) {
// Lo que sea
}

Working with Regular Expressions with Filters in PHP 5

Regex Coach: ayuda con expresiones regulares

Regex Coach es una aplicación para Windows que nos ayuda a probar y a aprender expresiones regulares (compatibles con Perl).
Nos ayuda a comprobar nuestras regexps mostrando las coincidencias que hay con una cadena de texto que podemos añadir, además de mostrarnos que partes del texto corresponden a una parte específica de la regexp o a una arbitraria.
regexcoach.png
Entre otras características nos encontramos con una simulación de split, un árbol (poco logrado) con la representación gráfica de la expresión regular y descripción de la expresión regular en inglés, entre otras cosas.
Regex Coach