[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