• Publicidad

Obtener valor con expresiones regulares

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Obtener valor con expresiones regulares

Notapor kaeri » 2008-04-30 08:56 @413

Hola.

Tengo un problema con expresiones regulares.

Tengo una cadena con estos valores $valores = 5,6,89 y quiero comparar que exista en una tabla dicho valor y activar un checkbox.

Tengo esta expresión regular:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($valores =~ /$u{'ndir'}/){
    # Ejecutar instrucción
    $chk = "checked"
}else{
    $chk = "";
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que quiero hacer con éste es que si el valor de $u{'ndir'} está en $valores que active el checkbox, pero lo que me está haciendo es que donde encuentra un 55 en la tabla lo activa por ejemplo el $u{'ndir'} = 5; lo cual no es correcto; ¿cómo puedo hacer que solo sea el 5?
Avatar de Usuario
kaeri
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2004-08-19 12:05 @545
Ubicación: México

Publicidad

Notapor explorer » 2008-04-30 11:47 @533

Un par de soluciones:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$valores = q[55,6,89];
$u{ndir} = 6;

$chk = ($valores =~ m/(?:^|\D)$u{ndir}(?:\D|$)/) ? q[checked] : q[];
############################
use List::MoreUtils q[any];
@valores = split q[,], $valores;
$chk = (any { $_ eq $u{ndir} } @valores) ? q[checked] : q[];
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2008-04-30 12:26 @560

Siguiendo más la línea que llevas, podrías solucionarlo con unos simples word boundaries:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($valores =~ /\b$u{'ndir'}\b/){
    # Ejecutar instrucción
    $chk = "checked"
}else{
    $chk = "";
}
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

Gracias

Notapor kaeri » 2008-04-30 12:32 @564

Ok, gracias ya he resuelto el problema, se los agradezco.
Avatar de Usuario
kaeri
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2004-08-19 12:05 @545
Ubicación: México


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado