Estoy tratando de hacer coincidir una expresión regular en Perl. Mi código es el siguiente:Escapar caracteres especiales en Perl regex
my $source = "Hello_[version]; Goodbye_[version]";
my $pattern = "Hello_[version]";
if ($source =~ m/$pattern/) {
print "Match found!"
}
El problema surge en ese paréntesis indican una clase de caracteres (o por lo que lee) cuando se trata de Perl que coincida con la expresión regular, y el partido acaba fracasando. Sé que puedo escapar de los corchetes con \[
o \]
, pero eso requeriría otro bloque de código para ir a través de la cadena y buscar los corchetes. ¿Hay alguna manera de hacer que los corchetes sean automáticamente ignorados sin escapar de ellos individualmente?
Nota rápida: No puedo simplemente agregar la barra invertida, ya que esto es solo un ejemplo. En mi código real, $source
y $pattern
provienen del código Perl (ya sea URIEncoded o de un archivo).
+1 Para usar el índice() – sln
¿Qué es exactamente un "carácter regex"? Tenía la impresión de que una expresión regular es solo un medio para unir cadenas o patrones en cadenas, no un conjunto específico de caracteres, a menos que haya otro significado para el que no tenga conocimiento. Aunque, gracias por el índice(). Daré una oportunidad cuando esté en mi servidor mañana; Creo que el índice() funcionará mejor y será más limpio que el ajuste de expresiones regulares. – CoV
"carácter regex" era un error tipográfico, tenía la intención de escribir "metacaracter regex". – tadmc