Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Obtener valor con expresiones regulares

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Mie Abr 30, 2008 7:56 am
kaeri
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Ago 2004
Mensajes: 53
Ubicación: México
Obtener valor con expresiones regulares Responder citando

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:
Perl:
if ($valores =~ /$u{'ndir'}/){
    # Ejecutar instrucción
    $chk = "checked"
}else{
    $chk = "";
}


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?
Mensaje Mie Abr 30, 2008 10:47 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
Responder citando

Un par de soluciones:

Perl:
$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[];
Mensaje Mie Abr 30, 2008 11:26 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

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

Perl:
if ($valores =~ /\b$u{'ndir'}\b/){
    # Ejecutar instrucción
    $chk = "checked"
}else{
    $chk = "";
}


Saludos
Mensaje Mie Abr 30, 2008 11:32 am
kaeri
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Ago 2004
Mensajes: 53
Ubicación: México
Gracias Responder citando

Ok, gracias ya he resuelto el problema, se los agradezco.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group