• Publicidad

RegExp. Sustituir expresión

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

RegExp. Sustituir expresión

Notapor pbellon » 2009-10-15 04:26 @226

Hola,

tengo que leer un fichero y sustituir tantas veces como aparezca una cadena por otra. Ejemplo1, si aparece CTSVxxxB sustituir por CTSVxxx1
Ejemplo2, si aparece CTSVxxxQ sustituir por CTSVxxx1

donde xxx puede ser cualquier letra o número.

He usado la siguiente expresión:
$rc = $string =~ s/CTSV([^ ]{3})[B|Q]/CTSV\1/g;

y me deja CTSVxxx.

Sin embargo, si uso
$rc = $string =~ s/CTSV([^ ]{3})[B|Q]/CTSV\11/g;

me deja CTSV, ya que interpreta \11 como el patrón 11.

¿Cómo puede poner el número 1?
pbellon
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2004-10-22 06:48 @325

Publicidad

Re: RegExp. Sustituir expresión

Notapor explorer » 2009-10-15 06:33 @314

En la parte derecha de la sustitución, debes usar $1:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -le '$string = "CTSVxxxQ"; ($rc = $string) =~ s/(CTSV\w{3})[B|Q]/${1}1/g; print "[$rc]"'
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Naturalmente, con llaves, para que tampoco se confunda con $11.
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: RegExp. Sustituir expresión

Notapor pbellon » 2009-10-29 05:32 @272

Perfecto. Gracias.
pbellon
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2004-10-22 06:48 @325


Volver a Intermedio

¿Quién está conectado?

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