Operador de predicción positivo

(?= ...) Operador de ``trailing'' o ``mirar-adelante'' positivo. Por ejemplo, /\w+(?=\t)/ solo casa una palabra si va seguida de un tabulador, pero el tabulador no formará parte de $&. Ejemplo:
> cat lookahead.pl
#!/usr/bin/perl

 $a = "bugs the rabbit";
 $b = "bugs the frog";
 if ($a =~ m{bugs(?= the cat| the rabbit)}i) { print "$a matches. \$& = $&\n"; }
 else { print "$a does not match\n"; }
 if ($b =~ m{bugs(?= the cat| the rabbit)}i) { print "$b matches. \$& = $&\n"; }
 else { print "$b does not match\n"; }
> lookahead.pl
bugs the rabbit matches. $& = bugs
bugs the frog does not match
>

Compare la siguiente salida:

> perl -e 'print "$ARGV\n\t$&\n" 
           if (m{<a href=\"(.*?)\">(?=(.*?)</a>.*?<a href)}i)' 
                                      -wn ~/public_html/*.html
/home/pl/public_html/plindex.html
        <a href="http://osr5doc.sco.com:1996/tools/CONTENTS.html">
/home/pl/public_html/plpracticas.html
        <a href="http://nereida.deioc.ull.es/html/java.html#html">
con la obtenida en la sección 3.15.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19