$& |
El texto que casó |
$` |
El texto que está a la izquierda de lo que casó |
$' |
El texto que está a la derecha de lo que casó |
$1, $2, $3 , etc. |
Los textos capturados por los paréntesis |
$+ |
Una copia del $1, $2, ...con número mas alto |
@- |
Desplazamientos de las subcadenas que casan en $1 ... |
@+ |
Desplazamientos de los finales de las subcadenas en $1 ... |
$#- |
El índice del último paréntesis que casó |
$#+ |
El índice del último paréntesis en la última expresión regular |
Ejemplo:
1 #!/usr/bin/perl -w 2 if ("Hello there, neighbor" =~ /\s(\w+),/) { 3 print "That was: ($`)($&)($').\n", 4 }
> matchvariables.pl That was: (Hello)( there,)( neighbor).
La variable $+
contiene el texto que casó
con el último paréntesis en el patrón. Esto es útil
en situaciones en las cuáles una de un conjunto de alternativas
casa, pero no sabemos cuál:
/Version: (.*)|Revision: (.*)/ && ($rev = $+);
El vector @-
contiene los offsets o desplazamientos
de los casamientos en la última expresión regular.
La entrada $-[0]
es el desplazamiento del último casamiento con éxito
y $-[n]
es el desplazamiento de la subcadena que casa
con el n
-ésimo paréntesis (o undef
si el párentesis
no casó). Por ejemplo:
DB<1> $z = "hola13.47" DB<2> if ($z =~ m{a(\d+)(\.(\d+))?}) { print "@-\n"; } 3 4 6 7
El array @+
contiene los desplazamientos de
los finales de los emparejamientos.
La entrada $+[0]
contiene el desplazamiento del final de la cadena
del emparejamiento completo.
Siguiendo con el ejemplo anterior:
DB<3> if ($z =~ m{a(\d+)(\.(\d+))?}) { print "@+\n"; } 9 6 9 9Se puede usar
$#+
para determinar cuantos subgrupos
había en el último emparejamiento que tuvo éxito.
DB<4> if ($z =~ m{a(\d+)(\.(\d+))?}) { print "$#+\n"; } 3 DB<5> if ($z =~ m{(a)(\d+)(\.(\d+))?}) { print "$#+\n"; } 4
La variable $#-
contiene el índice del último paréntesis
que casó. Observe la siguiente ejecución con el depurador:
DB<1> $x = '13.47'; $y = '125' DB<2> if ($y =~ m{(\d+)(\.(\d+))?}) { print "last par = $#-, content = $+\n"; } last par = 1, content = 125 DB<3> if ($x =~ m{(\d+)(\.(\d+))?}) { print "last par = $#-, content = $+\n"; } last par = 3, content = 47
Para saber más sobre las variables especiales disponibles
consulte perldoc perlvar
.
Casiano Rodríguez León