[eside-ghost] regex y sustitucion

STenyaK (Bruno Gonzalez) stenyak en gmail.com
Mie Abr 23 21:33:55 CEST 2008


On 4/23/08, Javier Ortega Conde (Malkavian) <malkavian666 en gmail.com> wrote:
>  > Esto:
>  > <img src=/images/imagen.gif width=19 heigth=19 border=0 title=""
>  > alt="">
>  >
>  > Por esto:
>  > <img src=/images/imagen.gif width=19 heigth=19 border=0 title=""
>  > alt="texto">

Asi sin probar, y con la sintaxis que puede variar segun qué uses (tal
vez tengas q escapar o no escapar cosas), podrias hacer:
s/\(<img[^>]*\ title="\)/\1"texto/g

que a cachos significaría:
busca dentro de un tag q empiece por "<img" y acabe en ">", que tenga
el texto ' title="', y añadele texto tras esa doble comilla.

Lo que esta entre \( y \) se almacena en la variable \1.
[^>]* significa cualquier caracter que no sea el de fin de tag (para q
no cambies el title a otro tag sin querer).
Y weno, la g para sustituir incluso si hay varias instancias en la misma linea.

El problema es que, según la sintaxis html/xhtml, los atributos del
tag pueden caer en diferentes líneas. Y yo de saltos de línea no
controlo mucho, asi que suelo usar un warrohack que es sustituir los
\n por un carácter de pitido antes del regexp, y después devuelvo los
pitidos a su estado original de salto de línea. Caracter de pitido o
cualquier otro caracter q sepas seguro q no vaya a haber en el html.
Para ello, puedes pipear el html a un temporal con el comando tr.

Weno, a ver si ayuda y no me he equivocado mucho :-)

-- 
Saludos,
     Bruno González

_______________________________________________
Msn/Jabber: stenyak AT gmail.com
ICQ: 153709484
http://www.stenyak.com


Más información sobre la lista de distribución eside-ghost