• Publicidad

Guardar parte de la cadena

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Guardar parte de la cadena

Notapor later » 2008-09-23 09:49 @450

Hola, buenas, tengo una duda que no resuelvo.

Yo tengo por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
hola $manu;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y yo quiero guardar en una variable "$manu" pero la cadena puede variar y nosotros no la sabemos, por ejemplo, "$alex". ¿Cómo podría hacer para guardar la cadena que me interesa sea cual sea en una variable?

Después tengo otros tipos de sintaxis por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
hola ("$manu");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y el problema se complica por que la sintaxis también puede variar, es decir que no siempre empezara por "$" y terminará en ";", pero ojo, porque yo lo quiero guardar con la "$" incluida.

Yo pensé hacer algo como:

* Si localizamos la palabra hola (if)
* busca $ y termina en un carácter no alfabético (como por ejemplo ";" o "comillas dobles");
* guarda la cadena en una variable en este caso la cadena sería "$manu".
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Publicidad

Notapor kidd » 2008-09-23 09:59 @457

Hola,

Podemos usar una expresión regular usando tus reglas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $string = 'hola $manu"';

$string =~ m/
             hola  #Si localizamos la palabra hola
             \s    #Seguido de un espacio
             (     #Iniciamos paréntesis de captura
              \$   #El carácter de $
              \w+  #Uno o más carácteres alfabeticos
             )     #Cerramos paréntesis de captura
              \W   #Seguido de un carácter NO alfabetico
            /xi;


print "$1\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Esto imprimirá correctamente:

Código: Seleccionar todo
$manu


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 » 2008-09-23 10:05 @462

Esta es mi solución:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

while (<DATA>) {
    chomp;

    if ( /hola.*?(\$?\w+)/simo ) {
        print "$_\t=> $1\n";
    }
}

__DATA__
hola $manu1;
hola ("$manu2");
hola manu3;
hola $manu4
hola ("manu5");
hola ("$manu6")
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sale:
Código: Seleccionar todo
hola $manu1;    => $manu1
hola ("$manu2");        => $manu2
hola manu3;     => manu3
hola $manu4     => $manu4
hola ("manu5"); => manu5
hola ("$manu6") => $manu6
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 Intermedio

¿Quién está conectado?

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

cron