regular online one for creator regex perl modifier

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