viernes, 4 de enero de 2008

Reemplazar expresiones regulares en frontpage

Es un problema estúpido, pero me he comido la cabeza de una forma espectacular.

Supongamos que usando Frontpage queremos reemplazar un texto que varía ligeramente de una aparición a otra por el mismo texto seguido de algo.

Concretamente tenemos un montón de enlaces del tipo:

<a href="algo" name="nombre1" >

<a href="algo" name="nombre2" >


Yo quería cerrarlos sin más para que el texto no estuviese iluminado.

Buscarlos es fácil, no hay más que usar expresiones regulares. Básicamente, para los que no lo sepan, coges la parte fija, sustituyes la parte variable por una expresión regular que la describa y marcas en el diálogo de buscar y reemplazar la casilla de "expresiones regulares". En nuestro caso, buscamos:
<a href=".@" name=".@" >

que es <a href=" seguido de un número de caracteres cualesquiera seguido de " name=" seguido de otro numero de caracteres cualesquiera seguido de " >.

Uso @ en vez de * para que si hay dos ocurrencias en la misma línea no me coja la línea entera, sino que me las encuentre por separado. Si no, solo encontrará una ocurrencia mucho más gorda.

Vale, hasta aquí estupendo. Me los encuentra y todo, pero ahora aparece el problema ¿Cómo narices reemplazo el texto variable para que siga variable?

Me ha costado encontrarlo, pero está aquí. Si en la caja de reemplazar pones \0, eso es todo el texto que ha encontrado, y en mi caso sólo tengo que poner "\0</a>" para cerrar inmediatamente el enlace. También puedes cerrar partes de la búsqueda entre corchetes para luego aprovecharlas en el reemplazo. Los corchetes no hacen nada en la búsqueda.

Ejemplo:

Búsqueda:<a href=".@" name=".@" >

Uno de los textos es <a href="algo" name="nombre2" >
  • si ponemos en reemplazar "</a>" nos reemplazará el texto por </a> (y el texto desaparecerá).

  • Si ponemos en reemplazar "\0</a>", nos reemplazará el texto por sí mismo seguido de </a> (en este caso <a href="algo" name="nombre2" ></a>).


Si queremos aprovechar partes de la búsqueda, hay que meterlas entre corchetes. Luego podrás usarlas poniendo \1 para el primer corchete, \2 para el segundo y así...

Búsqueda:<a href="{.@}" name="{.@}" >

Uno de los textos es <a href="www.algo.es" name="nombre_del_enlace" >
Si ponemos en reemplazar "\0 tiene como href \1 y como nombre \2" obtendremos <a href="www.algo.es" name="nombre_del_enlace" > tiene como href www.algo.es y como nombre nombre_del_enlace.


Espero que os sirva.

1 comentario:

Anónimo dijo...

aaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhh