• Publicidad

Duda con uso de expresiones regulares y la función grep

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Duda con uso de expresiones regulares y la función grep

Notapor fgalves » 2007-09-03 07:35 @357

Hola a todos,

Estoy teniendo ciertos problemas con expresiones regulares y el comando grep de Perl.

El caso es que en la variable $var, tengo una cierta expresión regular representando el nombre de uno o más ficheros:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var = "Ejemplo*.txt"
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y en el array @ficheros, tengo el nombre de todos los ficheros con los cual estoy trabajando:
Código: Seleccionar todo
Pepe.txt
Joselito.txt
Ejemplo_1.txt
Ejemplo_2.txt
….
Ejemplo_n.txt


Lo que me interesaría es “aplicar” la expresión regular contenida en $var y obtener de @ficheros todos aquellos que la cumplan (es decir, todos los que empiezan por Ejemplo).

He intentado lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( $var =~ /[\*|\+]/ )
{
   # se trata de una expresión regular          
   if (@ReportExpansion = grep(/$var/, @ficheros))
   {                                
        push (@outputReportList, @ReportExpansion);
    }
    else
   {
        push (@outputReportList, $var);
    }                              
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El caso es que en @ReportExpansion, siempre obtengo un array vacío.
¿Alguien ve lo que estoy haciendo mal?

¡Muchas gracias de antemano!
¡Un cordial saludo!,
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor explorer » 2007-09-03 07:54 @371

Prueba con

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var = "Ejemplo.*\.txt";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Recordar que el comodín '*' funciona de forma distinta a como lo interpreta el entorno de línea de comandos. Es decir, en línea de comandos sí que vale "Ejemplo*.txt", pero eso mismo en expresión regular quiere decir:
* 'Ejempl'
* 0 o más letras 'o'
* Cualquier carácter
* 'txt'
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 38 invitados