• Publicidad

Capturar texto independiente de las mayúsculas

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

Capturar texto independiente de las mayúsculas

Notapor matadamas » 2014-06-27 13:04 @586

Hola perleros.

Acudo a ustedes para exponer el siguiente problema que me ha dado vueltas la cabeza y no puedo encontrar la respuesta.

Requiero resaltar el texto encontrado en un string, independientemente de si tiene mayúsculas y minúsculas, pero que al final me respete el texto original.

Por ejemplo:

Tengo la frase: "Hola mundo"

Y quiero encontrar la palabra hola (con minúsculas), sin embargo, al utilizar las expresiones regulares me localiza la palabra con el modificador /i, pero me la sustituye con minúsculas.

Utilizo el siguiente código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.    $frase='Hola mundo...Hola mundo...';
  2.    $palabra='hola';
  3.    $frase=~s/$palabra/\<span class='resaltado'\>$palabra\<\/span\>/gi;
  4.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Creo que debo de alguna manera encontrar el patrón y guardarlo desde la frase original para luego sustituirlo, pero no encuentro como.

Gracias.
matadamas
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2014-06-27 12:53 @578

Publicidad

Re: Capturar texto independiente de las mayúsculas

Notapor explorer » 2014-06-27 18:43 @821

Bienvenido a los foros de Perl en Español, matadamas.

Efectivamente, fíjate que en la parte de sustitución, le estás diciendo que quieres que lo que encuentre lo sustituya por el contenido de $palabra, que es el "hola" escrito en minúsculas, por lo que siempre sale de esa manera.

Hay que indicarle que lo sustituya por lo que haya encontrado.

Entonces, en la parte del patrón de búsqueda, usamos los paréntesis para "capturar" lo que encontremos, y luego en la parte de sustitución lo recuperaremos, agregándole el <span>:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $frase = 'Hola mundo... hola mundo...';
  2.  
  3. $palabra = 'hola';
  4.  
  5. $frase =~ s{\b($palabra)\b}                             # si encontramos la $palabra, la capturamos
  6.            {<span class="resaltado">$1</span>}gi;       # y resaltamos lo capturado
  7.  
  8. print "$frase\n";       # <span class="resaltado">Hola</span> mundo... <span class="resaltado">hola</span> mundo...
  9.  
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

Re: Capturar texto independiente de las mayúsculas

Notapor matadamas » 2014-06-30 12:35 @566

Excelente solución, explorer.

Vaya que intentamos y lo único que encontramos fue el parámetro /i. Sin embargo, esta opción no la conocía.

Gracias
:D :D :D

Solo existen dos días en los que no puedes hacer nada al respecto... Ayer y mañana
matadamas
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2014-06-27 12:53 @578


Volver a Básico

¿Quién está conectado?

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