• Publicidad

Leer datos y ordenarlos, expresiones regulares

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

Leer datos y ordenarlos, expresiones regulares

Notapor chavelito » 2009-05-20 23:41 @028

Buenas noches. Creo que ya se me hizo costumbre preguntar, pero ahí voy. Mire, tengo la siguiente cadena: "<dia>15 hoy</dia> bla bla bla fe4<etc> <mes>enero 1</mes>sssas".

Quiero sacar el valor que está entre <dia>y</dia> y el valor que está entre <mes>y</mes>.

Yo he programado esto en PHP con la función explode() pero en el Perl no veo una función que me haga esto. He estado investigando y vi una: la función split...

Escribí esta parte... y :) me retorna los valores que le pedí del día, pero se agregan los demás... valores... ¿Cómo puedo hacerlo?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI ':standard';
my $cgi = CGI->new();
print $cgi->header();
my $data = '<dia>15 hoy</dia> bla bla bla fe4<etc> <mes>enero 1</mes>sssas';
print split(/[<dia><\/dia>]/, $data);
exit 0;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Gracias por su ayuda, muy buen foro :D
chavelito
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-05-20 17:09 @756

Publicidad

Notapor explorer » 2009-05-21 04:56 @247

Lo puedes hacer con una simple expresión regular:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $data = '<dia>15 hoy</dia> bla bla bla fe4<etc> <mes>enero 1</mes>sssas';

my ($dia,$mes) = $data =~ m/<dia>(.*?)<\/dia>.*?<mes>(.*?)<\/mes>/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor chavelito » 2009-05-21 09:00 @416

Gracias por la respuesta :D :P
chavelito
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-05-20 17:09 @756

Notapor chavelito » 2009-05-21 15:30 @687

Una última pregunta más: ¿cómo funcionaría si tiene saltos de página?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $data = '<dia>
15 hoy</dia>
 bla bla bla fe4
<etc> <mes>
enero 1</mes>
sssas'
;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
chavelito
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-05-20 17:09 @756

Notapor explorer » 2009-05-21 15:40 @694

Pues mal... hasta que agregues las opciones /s y /m a la expresión regular:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $data = "<dia>\n15 hoy</dia>\n bla bla bla fe4\n<etc> <mes>\nenero 1</mes>\nsssas";

my ($dia,$mes) = $data =~ m/<dia>(.*?)<\/dia>.*?<mes>(.*?)<\/mes>/sm;

print "[$dia], [$mes]\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
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 1 invitado

cron