Hola,

Buscando información por internet he visto que en la web de Macworld han colgado íntegramente un articulo que escribí para ellos. En concreto el enlace es este

Os lo copio y pego para que lo podáis leer:

Busquedas GREP en InDesign

Más potencia para las búsquedas de InDesign

Javier Pérez. Fecha: 01/05/2008

Descubre cómo la posibilidad de buscar y remplazar elementos mediante el uso de expresiones regulares de InDesign CS3 te permite realizar en segundos tareas que manualmente te llevarían horas.

Si no sabes de qué se trata, las expresiones regulares son una forma muy potente de realizar una operación de buscar y remplazar. Muy sofisticada porque permite el uso de caracteres especiales, denominados metacaracteres, que no representan el carácter como tal, sino algo más próximo a una expresión o el uso de comodines durante la operación de búsqueda/sustitución.

Por ejemplo, imaginemos que queremos buscar todas las palabras (o palabra) que estén entre comillas y eliminar las comillas además de cambiar dicho grupo de palabras (o palabra) a cursiva; o bien que tenemos una serie de cifras sin el punto de miles y queremos añadirlo. En otro caso, el documento podría tener una serie de nombres y apellidos usando el criterio «apellidos, nombre» para el resultado final.

Puede que al principio sea un poco difícil entender el concepto y manejar las expresiones regulares, pero una vez se han aprendido los conceptos básicos podemos ahorrar muchas horas de trabajo.

Todo potencia

Mediante el uso de consultas GREP es posible buscar y reemplazar prácticamente cualquier texto. La programación de las búsquedas es un poco complicada en los primeros pasos pero después, según se va usando, resulta mucho más comprensible. Es recomendable estudiar los ejemplos de este artículo, después los que vienen con la aplicación y consultar la web, donde siempre se puede encontrar más información.

Páginas en Internet con recursos hay pocas a día de hoy. Hay que entender que es la primera vez que una aplicación profesional de diseño gráfico y maquetación incorpora esta característica. Es de esperar que la gente vaya creando su patrones de búsqueda o consultas y las ponga a disposición de otros usuarios.

Javier Pérez (javierpm@openbankmail.com) es diseñador y colaborador de Macworld España.

1- Explorar las búsquedas GREP

Para entender mejor en qué consisten las búsquedas GREP aplicadas a InDesign lo mejor consiste en comenzar por ver las opciones disponibles en el cuadro de diálogo que el programa de Adobe dedica a dicha característica.

Consulta. Permite guardar las consultas para usarlas más tarde o para compartirlas con otros usuarios. Por omisión, InDesign incluye de serie un grupo de consultas muy interesantes. Varias de ellas permiten limpiar el texto, como por ejemplo la encargada de convertir varios espacios a uno solo o la de eliminar espacios al final de una línea.

Buscar. El contenido de este campo se llama consulta y representa la expresión que deseemos ejecutar como búsqueda, ya sea texto y expresiones GREP. Para ayudarnos disponemos de un menú especial a la derecha del campo de texto. Este menú muestra muchos de los códigos más frecuentes que se van concatenando según se vayan introduciendo. Este campo también admite el uso de caracteres Unicode.

Cambiar a. Este es el campo reservado al texto que se empleará para la sustitución. En este caso también se dispone de un menú para facilitar la introducción de los diferentes metacaracteres usados en las expresiones GREP.

Buscar. Podemos aplicar la búsqueda sobre el documento activo o bien en todos los documentos que estén abiertos en el programa. Dentro del documento (o documentos) podemos incluir también las capas o los artículos que estén bloqueados, las páginas maestras o las notas de pie de página, según esté seleccionado o desactivado cada uno de los iconos correspondientes.

Buscar formato y Cambiar formato. También existe la posibilidad de buscar una consulta (texto más código GREP) que coincida con un determinado formato gráfico y cambiar dicho formato por otro. Estos formatos admiten, si es necesario, el uso de estilos de carácter o de párrafo.

2- Crear Expresiones

Aunque en un principio los ejemplos que vamos a ver puedan parecer un poco básicos, la potencia se consigue mediante la combinación de diversos códigos que se pueden dividir en diferentes grupos de metacaracteres.

Los comodines. Se trata de una pieza fundamental de las búsquedas basadas en GREP. En realidad se trata de un caracter cuyo uso en una expresión representa a otro o a otros. Los más importantes son los que se pueden consultar en el cuadro «Los comodines GREP».

3– Los rangos

Los rangos sirven para limitar las búsqueda por encima y por debajo de una serie de valores. Para usar esta característica tenemos que introducir entre corchetes [] el rango a buscar. Por ejemplo, la expresión [aeiou] buscará sólo las vocales y [a-z] buscará todas las letras comprendidas dentro de dicho rango.

Para negar un rango (es decir, buscar el resto de caracteres no indicados en el rango) sólo tendremos que insertar el carácter ^ entre los corchetes. Por ejemplo, la expresión » Tabla [^\d]» buscará la expresión «Tabla » (con espacio después) más algún carácter que no sea un dígito, como «Tabla a».

Una última característica de los rangos es que pueden estar definidos en una lista. Para esto utilizamos los metacaracteres () y la lista de expresiones dentro separadas por la barra vertical (pulsando Alt + 1). Por ejemplo, para buscar Tabla, Figura o Fotografía más espacio, más dígito la expresión equivalente sería la siguiente: (Tabla|Figura|Fotografía)\s\d.

Negaciones. Para usar una negación simplemente tenemos que poner el mismo código en mayúscula. Por ejemplo, «\u» buscará letras en mayúsculas y «\U» buscará letras que estén en minúsculas.
Ubicación o lugar. También podemos elegir como criterio la localización dentro del texto. En este caso existe un total de cinco lugares entre los que podremos elegir a través del menú y dos mediante la inserción de código. Las opciones disponibles a través del menú son el inicio de palabra \<, el final de palabra \>, el límite de palabra \b, inicio de párrafo ^ y fin de párrafo $. Las opciones disponibles mediante código son el inicio de artículo \A y el final de artículo con \z.

Por ejemplo, la combinación de metacaracteres (sin comillas) «^\d\t» buscará un comienzo de párrafo, más un dígito, más un tabulador, que podría corresponderse con el caso típico de una lista numerada.
Repeticiones. También es posible buscar «n» veces un comodín o carácter. Por ejemplo, para buscar un número de cuatro cifras emplearemos los metacaracteres (sin comillas) «(\d{4})». En primer lugar incluimos el código y después la cantidad de apariciones entre corchetes {}.

Grupos. Esta es otra característica que no está disponible en el menú. Cuando se hace una búsqueda con varios criterios cada uno de estos se convierten en un grupo a la hora de colocarlos (o no) en el campo de «Cambiar a».

En el menú aparecen más opciones como los modificadores, la opción POSIX se encarga de activar o no la diferenciación entre mayúsculas y minúsculas o entre línea, si bien lo cierto es que estas modificaciones ya no son tan usuales en la aplicación que podamos hacer de ella dentro del programa de maquetación.

4– Usos prácticos

A continuación veremos una serie de ejemplos prácticos en los que también explicaremos su uso. Son casos muy normales, ejemplos del trabajo diario, en los que, de no existir las búsquedas GREP, nos llevarían muchísimo tiempo en una tarea repetitiva y tediosa.

Texto limpio. Muchas veces es preferible trabajar con el texto lo más limpio posible. Esto significa que una vez se ha importado el texto, lo primero consiste es buscar más de un espacio y sustituirlo por uno. También suele ser interesante buscar varios retornos y sustituirlos por uno solo; y, por último, eliminar los espacios que puedan encontrarse al final de cada línea. De hecho, estas son tres búsquedas que se proporcionan de ejemplo y se copian automáticamente cuando se instala la aplicación InDesign 5 (o CS 3).
Apellidos y nombre. Imaginemos que nos proporcionan el típico listado de personas con el formato de nombre y apellidos, y que nuestro trabajo consiste en diseñar el documento de modo que aparezcan justo en el orden contrario (apellidos y nombre). En este caso emplearemos los metacaracteres (sin comillas) «^(\w+) (\w+)$» para la consultar y los metacaracteres (sin comillas, nuevamente) «$2, $1» en el campo «Cambiar a». Estas expresiones son equivalentes a indicarle al programa que busque en cada inicio de párrafo cualquier carácter, una o más veces. Después que busque un espacio y por último cualquier carácter, una o más veces, al final y lo cambie por el grupo 2, más una coma, más un espacio y después el grupo 1.
Eliminar entradas duplicadas en una lista. Si importamos una lista de elementos y en ella existen entradas duplicadas su eliminación es muy fácil. Sólo tendremos que introducir el código GREP (sin comillas) «([^\r]+\r)\1+» en el campo de Buscar y poner «$1» en Cambiar a.

Eliminar comillas. Inserta la expresión (sin comillas) «([^»]+)» en el campo Buscar, y el metacaracter «$1″ en Cambiar a. En el campo Cambiar formato tendremos que indicar el formato que queremos para el texto entrecomillado.

Analizando el código, la expresión ([^»]+) indica que busque uno (o más) caracteres que no sea las comillas dentro de la cadena de texto que hay dentro de las comillas. La expresión «que no sean comillas» viene dada por [^»].

Eliminar el punto final de los titulares. Esta operación se puede encaminar de dos formas diferentes. En primer lugar, si hemos usado estilos de texto (como debe ser) podemos buscar ^(.*)\.$ más el estilo del ladillo (en Buscar formato) y reemplazar por $1. Si la analizamos, la expresión dice que al comienzo de una línea busque una cadena de caracteres que tiene que acabar con punto y, además, tiene un estilo concreto y lo cambias por la cadena de caracteres.

El otro planteamiento es buscar por el documento, al comienzo de una línea un dígito; más un punto; más otro posible dígito y un punto (y así hasta completar todos los niveles, en este caso 2) y que acabe en un punto final. Sería así: ^(\d\.\d?)(.*)\.$ y Cambiar a: $1.

Formato telefónico. En España hace varios años que el prefijo es obligatorio y forma parte integral del número de teléfono. No obstante, puede darse el caso de que nos encontremos con números de teléfono proporcionados con el siguiente formato: «(00) 0000000».

Aunque no hay un estándar para dividir las cifras del teléfono, lo que sí es seguro es que el prefijo no va entre paréntesis. Vamos a imaginar que queremos usar este formato: «00 000 00 00».

En Buscar pondremos: \((\d{2})\) (\d{3})(\d{2})(\d{2}) que equivale a: \( busca «(«; más (\d{2}) que busca una cifra con dos dígitos (grupo 1); más \) que busca «)»; más un espacio y, por último (\d{3})(\d{2})(\d{2}) que busca una cifra formada por siete dígitos en grupos de tres de 3, 2 y 2 cifras (grupos 2, 3 y 4 respectivamente). En Cambiar por, ponemos $1 $2 $3 $4.

Los comodines GREP

Comodín >  Símbolo
Un carácter . (un punto)
Letra en mayúscula \u
Letra en minúscula \l
Dígito (del 0 al 9) \d
Cualquier letra [\l\u]
Cualquier letra o dígito \w
Espacios (de todo tipo, incluyendo tabulaciones) \s
Indicar repetición de una o más veces + o *

Información adicional

Para tratarse de una de las nuevas característica de ID CS3, lo cierto es que la ayuda que acompaña a la aplicación resulta bastante escasa. En el número 138 de Macworld (Julio de 2004) puedes encontrar un artículo introductorio sobre el uso de las expresiones regulares y patrones GREP.

También puedes encontrar el libro electrónico GREP in InDesign publicado por O’Reilly (9,99 dólares; www.oreilly.com).

En la documentación de InDesign CS3 también encontrarás un cuadro muy interesante con la lista de los metacaracteres de búsqueda tanto para las fichas de texto como para las de GREP que, en muchos casos, no son iguales.

Búsqueda de puntos o barras invertidas

Existen ciertos caracteres que al ser usados como metacaracteres en la construcción de la propia consulta, no se pueden emplear directamente como texto. Por ejemplo, si se quiere buscar un punto no lo podemos poner directamente porque el punto tiene el significado de un carácter. Lo mismo pasa con la barra invertida. En estos casos basta con poner delante una barra invertida. Por ejemplo, si se desea buscar un punto se pondrá (sin las comillas) «\.», y si es una barra entonces será «\\».


2 Comments

israel · diciembre 10, 2008 at 4:44 pm

estoy probando lo que comentas pero no me sale, concretamente lo quiero para poder intercambiar una posición.

ejemplo:

quiero cambiar:

hola1,

por:

hola,1

pero el unos es un superindice, perdona pero es que no se ponerlo.

como harias eso, porque a mi no me sale.

un saludo.

admin · diciembre 15, 2008 at 3:45 pm

Veo que el tema ya te lo han resulto en el foro de macuarium.

Gracias,

Deja una respuesta