• Publicidad

Delimitar caracteres de comienzo y final en reemplazo cadena

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

Delimitar caracteres de comienzo y final en reemplazo cadena

Notapor sebas » 2012-11-06 12:03 @544

Muy buenas, tengo una duda creo que bastante básica a la hora de realizar una sustitución:

Tengo una línea de texto almacenada en una variable y quiero realizar una sustitución global en dicha línea pero de forma que solo se realice sobre las palabras que cumplen un cierto patrón (es decir, si la palabra tiene antes o después un espacio o un carácter no alfanumérico). El problema es que en la búsqueda sé delimitarle el patrón pero a la hora de sustituir no sé cómo especificarle que el punto o el carácter alfanumérico se mantenga.

Os pongo la expresión de ejemplo para que quede algo más claro:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $substituto=$hash{$palabra};
  2. $lineaAux =~ s/( |\.)\Q$palabra\E( |\.)/( |\.)$substituto( |\.)/gi;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Así me lo sustituye por el literal ( |\.) en vez de la ocurrencia que tuvo al principio... Supongo que será medio sencillo pero no consigo encontrar nada al respecto (¿quizás usando $1 o variables similares de Perl?).

Muchas gracias por adelantado, un saludo a todos,

Sebastián
sebas
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2012-11-06 11:47 @532

Publicidad

Re: Delimitar caracteres de comienzo y final en reemplazo ca

Notapor explorer » 2012-11-06 14:55 @663

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

En efecto, se pueden usar variables de sustitución:

$lineaAux =~ s/( |\.)\Q$palabra\E( |\.)/$1$substituto$2/gi;

De todas maneras... si lo que estamos buscando es una palabra normal (aquello compuesto por caracteres alfanuméricos, distinto de los caracteres espacio y de los caracteres ortográficos), entonces podemos dejarlo así:

$lineaAux =~ s/\b\Q$palabra\E\b/$substituto/gi;

'\b' marca la frontera entre un carácter de palabra, y lo que no es palabra. Más información en perldoc perlre .
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: Delimitar caracteres de comienzo y final en reemplazo ca

Notapor sebas » 2012-11-07 02:58 @165

Fetén ambas posibilidades, ¡gracias explorer!
sebas
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2012-11-06 11:47 @532


Volver a Básico

¿Quién está conectado?

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

cron