regex - online - Perl Regular Expression-¿Qué significa modificador gc?
regular expression creator online (2)
El modificador /g
se usa para recordar la "posición en una cadena" para que pueda procesar una cadena incrementalmente. p.ej
my $txt = "abc3de";
while( $txt =~ //G[a-z]/g )
{
print "$&";
}
while( $txt =~ //G./g )
{
print "$&";
}
Debido a que la posición se restablece en una coincidencia fallida, lo anterior se mostrará
abcabc3de
El indicador /c
no restablece la posición en una coincidencia fallida. Así que si agregamos /c
al primer regex como tal
my $txt = "abc3de";
while( $txt =~ //G[a-z]/gc )
{
print "$&";
}
while( $txt =~ //G./g )
{
print "$&";
}
Terminamos con
abc3de
Código de ejemplo: http://ideone.com/cC9wb
Tengo una expresión regular que coincide con algún texto como:
$text =~ m/$regex/gcxs
Ahora quiero saber qué significa el modificador ''gc'' :
Busqué y encontré que gc significa "Permitir búsqueda continua después de un fallo / g coincidente" .
Esto no está claro para mí. ¿Qué significa la búsqueda continua?
Por lo que he entendido, significa que comienza la coincidencia al principio si falla la búsqueda / g . ¿Pero el modificador / g no coincide con toda la cadena?
En el perldoc perlre http://perldoc.perl.org/perlre.html#Modifiers
Coincidencia global, y mantener la posición actual después de la coincidencia fallida. A diferencia de i, m, s y x, estas dos banderas afectan la forma en que se usa la expresión regular en lugar de la expresión regular. Consulte Uso de expresiones regulares en Perl en perlretut para obtener una explicación más detallada de los modificadores g y c.
La referencia especificada lleva a:
http://perldoc.perl.org/perlretut.html#Using-regular-expressions-in-Perl
Este URI tiene una sub-sección titulada ''Coincidencia global'' que contiene un pequeño tutorial / ejemplo práctico, que incluye:
Una coincidencia fallida o el cambio de la cadena de destino restablece la posición. Si no desea que se restablezca la posición después de que no haya coincidencia, agregue // c, como en / regexp / gc. La posición actual en la cadena está asociada con la cadena, no con la expresión regular. Esto significa que las diferentes cadenas tienen diferentes posiciones y sus respectivas posiciones se pueden establecer o leer de forma independiente.
HTH Lee