[eside-ghost] regex y sustitucion
Jon Urionaguena
juriona en nesys-st.com
Jue Abr 24 16:22:14 CEST 2008
Gracias a los dos...
Una preguntilla...
No es exactamente un script lo que tengo, sino que a una aplicación ya
programada, le doy una expresión para hacer match (no search, /s) y me
la "sustituye" por otra, es decir, no me vale search (creo que hay
diferencias con match, ¿no?) ni "añadir", (entiendo que /g). No se si es
algo como el método sub()...
¿Cómo quedaría con "sustituir"? (Voy a poner algo en "metalenguaje" mío...)
Búscame el texto= <img LOQUESEA alt"" LOQUESEA> y guarda los dos
LOQUESEAS en cada uno en una variable (1 y 2)
Sustituye por <img VAR1 alt="texto" VAR2>
Saludos,
Jon
STenyaK (Bruno Gonzalez) escribió:
> 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 :-)
>
>
--
Jon Urionaguena Mendizabal <juriona en nesys-st.com>
Director de Proyectos www.nesys-st.com
Tfno: 94 406 0546 Móvil: 675 610 399
GPG: 01D3 27A9 A663 C89E 3F72 2C5B 4913 E546 C4AA 2A97
Más información sobre la lista de distribución eside-ghost