• Publicidad

Duda con Regexp

¿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 Regexp

Notapor tomas_fnm » 2006-05-18 16:57 @748

Cuando ejecuto este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $linea = "la web</gl></b> a formato <gl><b>Latex</b>:Sistema";
  2.  
  3. $linea =~ m/<gl>(<\w>)*(\w+)/;
  4.  
  5. print "\n$2\n\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

La salida que produce es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Latex

 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Y hasta ahí no tengo problemas... pero lo que necesito es que la variable $linea se asigne al abrir un archivo de entrada... y cuando hago esto, el programa no me arroja algún valor en la variable $2... he probado de hartas formas y no sé dónde puede estar el error...

Cuando realizo una coincidencia, ¿hay alguna forma de capturar lo que encuentre en alguna variable que no sea por defecto? Es decir, en una variable que no sea $2, en este caso...

De antemano, gracias.
Avatar de Usuario
tomas_fnm
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-05-14 18:54 @829

Publicidad

Notapor kidd » 2006-05-18 22:20 @972

Hola.

Pon el código que usas ya cuando abres el archivo e intentas hacer la captura con exp. reg.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2006-05-19 04:01 @209

Para asignar el contenido de un fichero a una variable, hay multitud de ejemplos en estos foros:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open FILE, "<fichero.txt" or die "ERROR: No pude abrir fichero.txt: $!\n";
  2. while ( $linea = <FILE> ) {
  3.     $linea =~ m/<gl>(?:<\w>)*(\w+)/;
  4.     print "\n$1\n\n";
  5. }
  6. close FILE;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Fíjate que he cambiado el primer grupo de paréntesis de captura por uno que sólo agrupa. Entonces el segundo par de paréntesis captura su contenido y lo deja en $1.

Para asignar a una variable directamente el resultado de la captura, se puede utilizar una expresión regular extendida, pero experimental:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $linea =~ m/<gl>(?:<\w>)*(\w+)(?{ $palabra = $^N })/;
  2.     print "\n$palabra\n\n;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Más información en perlre.

Como dice Uriel, es mejor que pongas tu código para saber qué ocurrió.
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 26 invitados