• Publicidad

Guardar 'texto'

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

Guardar 'texto'

Notapor joss » 2007-11-03 08:19 @388

hola.adios

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Con eso lo que haciamos era guardar en $palabra1-hola y en $palabra2-adios.

Si el texto que quiero guardar está entre comillas simples sería así???

' texto de prueba '

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1, $palabra2) = $doc =~ m/\'\'(\w+)\'\'/simo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


?????

Saludos
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Publicidad

Notapor explorer » 2007-11-03 10:16 @469

Mejor así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($texto_que_quiero_guardar) = $doc =~ m/'([^']+?)'/simo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Tenemos que encontrar cualquier texto que NO (^) sea una comilla, entre comillas.
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 joss » 2007-11-13 15:01 @667

Tengo un nuevo problema. Quiero guardar el texto entre comillas:

blablablablablablablablablablabla' Texto te quiero guardar en una variable ' blablablabla.


Nota*: En el texto puede haber paréntesis y demás...

Yo intenté capturarlo de esta forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$palabra = $1 if ($doc =~ /.*value\s'(.*)'\sto.*/);
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no consigo resultado.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor explorer » 2007-11-13 16:02 @710

A mí sí que me funciona:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l

$doc = q/blablablablablablablablablablvalue ' Texto te quiero guardar en una variable ' toblablablabla./;

print $texto;

$palabra = $1 if ($doc =~ /.*value\s'(.*)'\sto.*/);

print $palabra;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Fíjate que en la expresión regular pones que tiene que terminar obligatoriamente por algo con value antes del entrecomillado, y que después, obligatoriamente, debe aparecer algo que empieza por to.
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 kidd » 2007-11-14 11:41 @529

explorer escribiste:A mí sí que me funciona:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l

$doc = q/blablablablablablablablablablvalue ' Texto te quiero guardar en una variable ' toblablablabla./;

print $texto;

$palabra = $1 if ($doc =~ /.*value\s'(.*)'\sto.*/);

print $palabra;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Fíjate que en la expresión regular pones que tiene que terminar obligatoriamente por algo con value antes del entrecomillado, y que después, obligatoriamente, debe aparecer algo que empieza por to.


También habría que considerar que los * son avariciosos, por lo que si por alguna razón hay un segundo value más adelante la expresión seguirá hasta él y la expresión no funcionará como queremos, quizá este sea el problema, solamente sería cuestión de cambiar el comportamiento del *, también lo mismo con el que está dentro de los paréntesis de captura:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
/.*?value\s'(.*?)'\sto.*/
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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 later » 2007-11-15 14:37 @650

Y como podría guardar un email con la expresión regular.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$texto=" Grabar el email [email protected] jajaja";

($email) = $texto =~ m{(.*?)@(.*?)};

print $email;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Notapor explorer » 2007-11-15 14:47 @658

Una de las muchas posibles soluciones:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($email) = $texto =~ m{(\w+\@[\w.]+)};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y recuerda que si pones una '@' dentro de comillas dobles, Perl intentará interpolarlo como si fuera un array. Usa comillas simples.
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 later » 2007-11-15 16:09 @715

De esa forma tampoco me funcionó.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$texto=" Grabar el email [email protected] jajaja";

($email) = $texto =~ m{(\w+\@[\w.]+)};

print $email;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


He estado mirando más combinaciones pero no me funcionan.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($email) = $texto =~ m{(\.*?\@.*?)};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Notapor explorer » 2007-11-15 18:41 @820

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
$texto=' Grabar el email [email protected] jajaja';

($email) = $texto =~ m{(\w+\@[\w.]+)};

print $email; # [email protected]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Te dije que no pusieras la '@' en texto con comillas dobles... :-D Tendrás que escaparla con un '\' o, como he hecho yo, entrecomillar simple.
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 later » 2007-11-16 15:15 @677

Gracias explorer. Me creía que decías en la regex con lo de las comillas dobles, y como no veía ninguna lo dejé como estaba. Sorry.

Pero una cosa: ¿qué pasa si en el texto hay más de un email?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
$texto=' Grabar el email [email protected] jajaja [email protected]';

($email) = $texto =~ m{(\w+\@[\w.]+)};

print $email;
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados