Regresar   Foros del Web > Programación para sitios web > Perl y CGI

El registro es Gratis en Foros del Web
Respuesta
 
Herramientas Buscar en Tema Desplegado
Antiguo 23/04/08, 20:45:41   #1 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Consulta Expresion Regular

Hola, quería saber si alguien me puede ayudar con la siguiente duda:

Tengo un string el cual puede ser por ejemplo: "la casa del casamiento es linda. La CASA se ve de lejos".

Ando necesitando reemplazar el término(aunque aparezca en mayúsculas o minúsculas) "casa" por "xxxx". Es decir, la expresión debería quedar: "la xxxx del xxxxmiento es linda. La xxxx se ve de lejos".

Logré reemplazar "casa", pero al querer reemplazar las otras 2 apariciones, me falla o bien cambia por ejemplo "casamiento" por "xxxx".

Me podrían ayudar?.

Gracias!.
  Responder Con Cita
Antiguo 24/04/08, 01:01:28   #2 (permalink)
aloqui tiene algunos puntos positivos de karma
 
Registrado: dic 2007
Mensajes: 734
aloqui is online now  
Re: Consulta Expresion Regular

Prueba con ésto, a mí me ha funcionado:
Código:
#!/usr/bin/perl
use strict;
my $frase = "la casa del casamiento es linda. La CASA se ve de lejos";
$frase =~ s/casa/xxxx/gi;
print "frase='$frase'\n";
  Responder Con Cita
Antiguo 05/05/08, 15:42:09   #3 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Re: Consulta Expresion Regular

Si!, a mi también, muchas gracias!.
  Responder Con Cita
Antiguo 05/05/08, 15:50:32   #4 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Re: Consulta Expresion Regular

Disculpen, nueva consulta...

Por que no es posible hacer lo siguiente?:

Supongamos que:

$busca = 'CASA';
$param = 'LA CASA DEL ARBOL ESTA MANCHADA DE PINTURA';

$param =~ s/$busca/\$\{busca\}/gi;

$busca = 'CAJA';

print $param;

Cuando imprimo, en lugar de mostrarme: "LA CAJA DEL ARBOL ESTA MANCHADA DE PINTURA", me muestra el cambio literal de la expresion: "LA ${busca} DEL ARBOL ESTA MANCHADA DE PINTURA".

Se puede lograr esta funcionalidad con expresiones regulares?.

Saludos y perdon por las molestias.
  Responder Con Cita
Antiguo 05/05/08, 15:56:11   #5 (permalink)
a2a2 tiene algunos puntos positivos de karma
 
Registrado: mar 2008
Mensajes: 250
a2a2 is offline  
Re: Consulta Expresion Regular

Te sustituye "${busca}" en el resultado porque le has puesto una barra invertida delante del $.

¿ Que quieres hacer ¿ Cambiar CASA por CAJA, usando variables ? En ese caso creo que es:
$origen = 'CASA';
$destino = 'CAJA';
$frase = 'LA CASA DEL ARBOL ESTA MANCHADA DE PINTURA';
$frase =~ s/$origen/$destino/gi;
  Responder Con Cita
Antiguo 05/05/08, 16:16:34   #6 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Re: Consulta Expresion Regular

Hola, nono, ese no sería el caso. Lo que me sucede en concreto es lo siguiente:

Yo tengo un array con por ejemplo 2 elementos:

@v = ['casa','color'];
$frase = 'La casa de color azul';

y cuando lo recorro, hago el siguiente reemplazo:

foreach $param (@v) {
$frase =~ s/$param/<FONT COLOR="red">${param}<\/FONT>/gi;
}

El problema que me surgió, es que al tomar $param el valor 'color', me queda mal formada la frase, es decir:

Al ser $param = 'casa' se hace lo siguiente:
"La <FONT COLOR="red">casa</FONT> de color azul"

Al pasar a ser 'color', me cambia de mas:

"La <FONT <FONT COLOR="red">="red">casa</FONT> de <FONT COLOR="red">color<FONT COLOR="red"> azul"

De esta manera, me rompe el tag de fuente que puse.
  Responder Con Cita
Antiguo 05/05/08, 16:31:45   #7 (permalink)
a2a2 tiene algunos puntos positivos de karma
 
Registrado: mar 2008
Mensajes: 250
a2a2 is offline  
Re: Consulta Expresion Regular

Ah, ahora entiendo.
Pues en este caso tienes suerte y es facil corregirlo ya que en un caso es en mayusculas y en otro en minusculas. Sólo tienes que quitar el modificador "i" (ignore case) que hay al final de la expresión regular. Otros casos pueden no ser tan fáciles y necesitas modificar la expresión regular, añadiendo espacios u otras cosas.
  Responder Con Cita
Antiguo 06/05/08, 07:37:45   #8 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Re: Consulta Expresion Regular

Hola, gracias por la ayuda, entonces si quiero que cambie cuando es en mayusculas como minusculas debo hacer 2 expresiones regulares?. Saludos.
  Responder Con Cita
Antiguo 06/05/08, 11:59:38   #9 (permalink)
a2a2 tiene algunos puntos positivos de karma
 
Registrado: mar 2008
Mensajes: 250
a2a2 is offline  
Re: Consulta Expresion Regular

A ver, si incluyes el modificador "i" (al final de la expresión regular) le indicas que considere igual mayúsculas y minúsculas. Si no incluyes dicho modificador, las mayusculas y las minúsculas las considerará letras diferentes.
  Responder Con Cita
Antiguo 06/05/08, 12:54:00   #10 (permalink)
Agus211 ha deshabilitado el Karma
 
Registrado: feb 2007
Mensajes: 31
Agus211 is offline  
Re: Consulta Expresion Regular

Pero si en el vector pongo: "COLOR" en lugar de "color", falla nuevamente. Saludos.
  Responder Con Cita
Antiguo 06/05/08, 14:42:22   #11 (permalink)
Colaborador
jferrero tiene un saldo positivo de karma
 
Registrado: may 2006
Ubicación: Madrid
Mensajes: 303
jferrero is offline  
Re: Consulta Expresion Regular

Código:
#!/usr/bin/perl
use warnings;
use strict;

my @v = ('casa','color');
my $frase = "La casa de color azul\n";

for my $param ( @v ) {
    $frase =~ s/$param/<FONT COLOR="red">$param<\/FONT>/;
}

print $frase;
El problema está en la definición del array @v. Estabas usando corchetes, con lo que realmente estabas definiendo un array anónimo con dos elementos, con lo que @v contenía un solo elemento: una referencia a ese array.
  Responder Con Cita
Respuesta


Califica este Tema - Consulta Expresion Regular.

Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado Califica este Tema
Califica este Tema:

Reglas del foro
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está activado
Las caritas están activado
Código [IMG] está activado
Código HTML está desactivado


Todas las horas son GMT -6. La hora es 16:47:55.

Message Board Statistics

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96