Página 1 de 1

RegExp. Sustituir expresión

NotaPublicado: 2009-10-15 04:26 @226
por pbellon
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?

Re: RegExp. Sustituir expresión

NotaPublicado: 2009-10-15 06:33 @314
por explorer
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.002 segundos, usando GeSHi 1.0.8.4


Naturalmente, con llaves, para que tampoco se confunda con $11.

Re: RegExp. Sustituir expresión

NotaPublicado: 2009-10-29 05:32 @272
por pbellon
Perfecto. Gracias.