regex - online - Perl itera a través de cada partido
regular expression creator online (3)
Digamos que estoy escaneando una página de HTML sin formato en busca de esta expresión regular. (La comilla en el extremo es intencional).
m/(https?:////.*?(?:''|"))/
Este patrón es probable que coincida ~ 100 veces. ¿Qué es un idioma perl común / una forma rápida de iterar a través de una lista de todas las coincidencias del grupo de captura?
@Zahid: Creo que tu enfoque es más compacto. Espero que el siguiente fragmento te ayude a entender tu ejemplo
my $str = ''file_%date%_%name%_%lang%.txt'';
my @ts = $str =~ /%([/w]+)%/g;# <----------Zahid said
print join(", ", @ts);
Salida:
date, name, lang
Desde el perlretut (un tutorial muy bueno)
while ($x =~ /(/w+)/g) {
print "Word is $1, ends at position ", pos $x, "/n";
}
Puedes usar while
junto con el modificador g
para iterar sobre todas las coincidencias, con $1
obtienes el contenido de tu grupo de captura 1, y en este ejemplo del tutorial también obtienes la posición con pos
.
El modificador '' g
'' de coincidencia global devuelve una lista de coincidencias capturadas en el contexto de la lista:
say $_ for $str =~ /un($wanted)/g; # Prints only $wanted