InDesign. Búsquedas GREP

Una de las funciones de InDesign más potentes que nos ahorran tiempo y trabajo son las búsquedas GREP. Junto con los scripts uno de los pilares de la automatización en el mejor software de diseño editorial.

Vamos a empezar por un ejemplo concreto de su utilidad para después dejaros multitud de recursos para sacar todo el partido a las búsquedas GREP en InDesign.

Ejemplo de uso GREP

En el foro, HPratt consulta cómo puede desde una sola consulta GREP cambiar en un documento los siglos a versalitas.

Dejamos aquí­ una posible solución que explicamos para que la podáis personalizar:

Pongamos estas 3 posibilidades:

  1. Siglo xv
  2. siglos xv y xvi
  3. siglo. xv

((((?i)siglo)s?[:.]?)|(y))((\sxvi)|(\sv))

Esta búsqueda nos encontrará las 3 cadenas anteriores.

  • (?i) desactiva las mayúsculas para que encuentre tanto siglo como Siglo
  • s? deja como opcional la aparición de la s, encuentra tanto siglo como siglos
  • [:.]? opcionalmente puede encontrar diversos caracteres que indiquemos
  • |(y) con esto hacemos que los números también puedan estar precedidos de «y»
  • El gran segundo grupo nos servirá para poner todos los siglos. Los ponemos en subgrupos y entre ellos  | para que encuentre uno u otro siglo. Cada subgrupo comenzará por el comodí­n de cualquier espacio en blanco \s

Es sólo una aproximación, si hubiera una cadena del tipo: «siglo:xvi» no la encontrarí­a porque hemos indicado que cada siglo comience con un espacio en blanco. Podrí­amos añadirlo como opcional poniendo \s?.

Actualización

HPratt sólo quiere cambiar los números romanos y con la expresión anterior se cambiarí­a todo «siglos» y también «y».

Lo que podemos hacer es utilizar un condicionante para que sólo encuentre los números romanos pero siempre y cuando estén precedidos por «(S,s)iglo(s)» o «y»

(((?<=[Ss]iglo)s?[:.]?)|(?<=y))((\s?xvi)|(\sv))

La clave está en ?<=, el operador lookbehind positivo, lo ponemos delante de siglos e y. Hemos cambiado el desactivado de las mayúsculas por [Ss] al ir entre corchetes le damos a ID la opción de que iglos empiece por S o s.

image

Las expresiones GREP son un submundo dentro de InDesign, os dejos algunos enlaces de utilidad

Ejemplos útiles

En perasalvino encuentro este artí­culo que recoge hasta 16 expresiones para encontrar:

  • La primera letra en cada í­tem de listas de viñetas: (.)(\t)(\l)
  • Palabras entre corchetes: \[\w{4,20}\]
  • TODO MAYíšSCULAS: \<[\u]{2,}\>
  • Texto entrecomillado («»): («)(\u*\l* *.*\w*\d*)(«)
  • Texto entre paréntesis: (\()(\u*\l* *.*\w*\d*)(\))
  • E-mail: [\l\u\d_%-]+@[\l\u\d_%-]+
  • Fechas con formato dd/mm/aa o dd/mm/aaa: \d\d?-\d\d?-(\d\d)?\d\d
  • Varios términos: \b(termino 1|termino 2|termino 3|termino 4)

Metacaracteres

De la ayuda de Adobe  y en español sacamos expresiones con ejemplos del resultado

Expresión Cadena de búsqueda Texto de ejemplo Coincidencias (en negrita)
Tipos de caracteres [abc] o [abc] Maria cuenta bien. Maria cuentabien.
[ ] Busca la letra a, b o c.
Inicio de párrafo ^~_.+ «Vimos»”o, al menos, eso creemos»”una vaca morada.» «Vimos»”o, al menos, eso creemos»”una vaca morada.»
^ Este signo busca el inicio de párrafo (^) por un guión largo (~_) seguido de cualquier carácter ( . ) una o varias veces (+). «”Konrad Yoes «”Konrad Yoes
Operador ‘lookahead’ negativo InDesign (?!CS.*?) InDesign, InDesign 2.0, InDesign CS e InDesign CS2 InDesign, InDesign 2.0, InDesign CS e InDesign CS2
(?!patrón) El operador ‘lookahead’ negativo hace coincidir la cadena de búsqueda, sólo si no va seguido del patrón especí­fico.
Operador ‘lookahead’ positivo InDesign (?=CS.*?) InDesign, InDesign 2.0, InDesign CS, e InDesign CS2 InDesign, InDesign 2.0, InDesignCS y InDesign CS2
(?=patrón) El operador ‘lookahead’ positivo hace coincidir la cadena de búsqueda, sólo si no va seguido del patrón especí­fico.
Utilice patrones similares en operadores ‘lookbehind’ negativos(?<!patrón) y positivos (?<=patrón).
Grupos (rápido) (zorro) (marrón) El rápido zorro marrón subió y bajó de un salto. El rápido zorro marrón subió y bajó de un salto.
( ) Todo el texto encontrado = rápido zorro marrón; Texto encontrado 1= rápido; Texto encontrado 2 = zorro; Texto encontrado 3= marrón
Paréntesis sin marcado (rápido) ($:zorro) (marrón) El rápido zorro marrón subió y bajó de un salto. El rápido zorro marrón subió y bajó de un salto.
(?:expresión) Todo el texto encontrado = rápido zorro marrón; Texto encontrado 1= rápido; Texto encontrado 2 = zorro
Mayús./minús. activado (?i)manzana Manzana manzana MANZANA ManzanamanzanaMANZANA
(?i) También puede utilizar (?i:manzana)
Mayús./minús. desactivado (?-i)manzana Manzana manzana MANZANA Manzana manzana MANZANA
(?-i)
Multilí­nea activado (?m)^\w+ Uno Dos Tres Cuatro Cinco Seis Siete Uno Dos Tres Cuatro Cinco SeisSiete Ocho
(?m) En este ejemplo, la expresión busca una o más (+) palabras (\w) al principio de una lí­nea (^). La expresión (?m) permite que todas las lí­neas del texto encontrado se traten como lí­neas separadas.
Multilí­nea desactivado (?-m)^\w+ Uno Dos Tres Cuatro Cinco Seis Siete Uno Dos Tres Cuatro Cinco Seis Siete
(?-m)
Lí­nea por lí­nea activado (?s)c.a abc abc abc abc abc abcabc abc
(?s) Las búsquedas para cualquier carácter ( . ) entre las letras c y a. La expresión (?s) hace coincidir cualquier carácter, incluso si recae en la siguiente lí­nea.
Lí­nea por lí­nea desactivado (?-s)c.a abc abc abc abc abc abc abc abc
Ignorar espacio en blanco activado (?s)\w \w\w El rápido zorro marrón Elpido zorro marrón
(?x) Este busca una palabra (\w), seguida por un espacio, seguida por dos o más palabras (\w\w). La expresión (?s) normalmente ignora todos los espacios en blanco, lo que quiere decir que busca tres caracteres en una fila (\w\w\w).
Ignorar espacio en blanco desactivado (?-s)\w \w\w El rápido zorro marrón El rápido zorro marn
(?-x)
Repetir el número de veces b{3} coincide 3 veces exactamente abbc abbbc abbbbc abbbbbc abbc abbbc abbbbc abbbbbc
{ } b(3,} coincide al menos 3 veces abbc abbbc abbbbc abbbbbc
b{3,}? coincide al menos 3 veces (coincidencia más corta) abbc abbbc abbbbc abbbbbc
b{2,3} coincide al menos 2 veces y no más de 3 veces abbc abbbc abbbbc abbbbbc
b{2,3}? coincide al menos 2 veces y no más de 3 (coincidencia más corta) abbc abbbc abbbbc abbbbbc

Y un buen listado de los metacaracteres tanto para texto como para GREP

Carácter: Metacarácter de la ficha texto: Metacarácter de la ficha GREP:
Carácter de tabulación ^t \t
Fin de párrafo ^p \r
Salto de lí­nea forzado ^n \n
Cualquier número de página ^# ~#
Número de página actual ^N ~N
Número de página siguiente ^X ~X
Número de página anterior ^V ~V
* Cualquier variable ^v ~v
Marcador de sección ^x ~x
* Marcador de objeto anclado ^a ~a
* Marcador de referencia de nota al pie de página ^F ~F
* Marcador de í­ndice ^I ~I
Sí­mbolo de viñeta ^8 ~8
Carácter de intercalación ^^ \^
Barra inclinada inversa \ \\
Signo de copyright ^2 ~2
Puntos suspensivos ^e ~e
Virgulilla ~ \~
Sí­mbolo de párrafo ^7 ~7
Sí­mbolo de marca registrada ^r ~r
Sí­mbolo de sección ^6 ~6
Sí­mbolo de marca comercial ^d ~d
Abrir paréntesis ( \(
Cerrar paréntesis ) \)
Abrir llave { \{
Cerrar llave } \}
Abrir corchete [ \[
Cerrar corchete ] \]
Guión largo ^_ ~_
Guión corto ^= ~=
Guión opcional ^- ~-
Guión de no separación ^~ ~~
Espacio largo ^m ~m
Espacio corto ^> ~>
Tercio de espacio ^3 ~3
Cuarto de espacio ^4 ~4
Sexto de espacio ^% ~%
Espacio de alineación ^f ~f
Espacio ultrafino ^| ~|
Espacio de no separación ^s ~s
Espacio de no separación (ancho fijo) ^S ~S
Espacio fino ^< ~<
Espacio para cifra ^/ ~/
Espacio de puntuación ^. ~.
Contenido del Portapapeles, con formato ^c ~c
Contenido del Portapapeles, sin formato ^C ~C
Cualquier comilla doble « «
Cualquier comilla sencilla
Comilla doble recta
Comillas de apertura ^{ ~{
Comillas de cierre ^} ~}
Comilla recta ^’ ~’
Comilla de apertura ^[ ~[
Comilla de cierre ^] ~]
Retorno de carro estándar ^b ~b
Salto de columna ^M ~M
Salto de marco ^R ~R
Salto de página ^P ~P
Salto de página impar ^L ~L
Salto de página par ^E ~E
Salto de lí­nea opcional ^j ~a
Tabulación de sangrí­a derecha ^y ~y
Sangrí­a hasta aquí­ ^i ~i
Finalizar estilo anidado aquí­ ^h ~h
Separador ^k ~k
Encabezado (estilo de párrafo) ^Y ~Y
Encabezado (estilo de carácter) ^Z ~Z
Texto personalizado ^u ~u
Número de la última página ^T ~T
Número de capí­tulo ^H ~H
Fecha de creación ^S ~S
Fecha de modificación ^o ~o
Fecha de salida ^D ~D
Nombre de archivo ^l (L minúscula) ~l (L minúscula)
*Cualquier dí­gito ^9 \d
*Cualquier carácter que no sea un dí­gito \D
*Cualquier letra ^$ [\l\u]
*Cualquier carácter ^? . (inserta un punto en Cambiar por)
* Espacio en blanco (cualquier espacio o tabulación) ^w \s (inserta un espacio en Cambiar por)
* Cualquier carácter que no sea un espacio en blanco \S
* Cualquier palabra \P
* Cualquier carácter que no sea una palabra \W
* Cualquier letra mayúscula \u
* Cualquier carácter que no sea una letra mayúscula \U
* Cualquier letra minúscula \l
* Cualquier carácter que no sea una letra minúscula \L
Todo el texto encontrado $0
Texto encontrado 1-9 $1 (especifica el número del grupo encontrado, por ejemplo, $3 para el tercer grupo; los grupos aparecen entre paréntesis)
* Kanji ^K \K
Inicio de palabra \<
Fin de palabra \<
Lí­mite de palabra \b
Contrario de lí­mite de palabra \B
Inicio de párrafo ^
Fin de párrafo [ubicación] $
Cero o una vez ?
Cero o más veces *
Una o más veces +
Cero o una vez (coincidencia más corta) ??
Cero o más veces (coincidencia más corta) *?
Una o más veces (coincidencia más corta) +?
Subexpresión de marcado ( )
Subexpresión sin marcado (?: )
Conjunto de caracteres [ ]
O |
Operador ‘lookbehind’ positivo (?<= )
Operador ‘lookbehind’ negativo (?<! )
Operador ‘lookahead’ positivo (?= )
Operador ‘lookahead’ negativo (?! )
Mayús./minús. activado (?!)
Mayús./minús. desactivado (?-!)
Multilí­nea activado (?m)
Multilí­nea desactivado (?-m)
Lí­nea por lí­nea activado (?s)
Lí­nea por lí­nea desactivado (?-s)
Ignorar espacio en blanco activado (?x)
Ignorar espacio en blanco desactivado (?-x)
* Cualquier carácter alfanumérico [[:alnum:]]
* Cualquier carácter alfabético [[:alpha:]]
* Cualquier espacio en blanco, espacio o tabulación [[:blank:]]
* Cualquier carácter de control [[:control:]]
* Cualquier carácter gráfico [[:graph:]]
* Cualquier carácter imprimible [[:print:]]
* Cualquier signo de puntuación [[:punct:]]
* Cualquier carácter cuyo código sea mayor de 255 (se aplica sólo a las clases de caracteres anchos) [[:unicode:]]
* Cualquier dí­gito hexadecimal 0-9, a-f y A-F [[:xdigit:]]
* Cualquier carácter de un conjunto de de pictogramas, como por ejemplo a, í , á, í¢, í£, í¤, í¥, A, í€, í, í‚, íƒ, í„ y í… [[=a=]]

También lo tienes como Cheat Sheet en formato pdf

image

Otros enlaces:

Ví­deos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  1. Hola Cristian, muchas gracias por lo aprendido hasta acá.
    Tengo un problema particular que quizá se pueda resolver con GREP. Estoy haciendo un pequeño diccionario Alemán-Español para un examen y me gustaría invertir el orden (a Español-Alemán) automáticamente, el tema que la solución Find what: (\w+)\s(\w+) Change to: $2, $1 que resuelve el ejemplo «Juan Pérez > Pérez, Juan» no me alcanza porque las definiciones son más complejas, por ejemplo:
    —————————————————–
    Haupteil (der)= parte principal.
    herausgeben= publicado, editado.
    Herausgeber (der)= editor, emisor.
    hervorgehoben= poner de relieve, destacar.
    Hochachse= eje vertical.
    inwieweit= en qué medida, hasta dónde.
    Karo-Muster= cuadriculado.
    —————————————————–
    O sea, cómo le diría a GREP que todo lo que esta antes del signo igual me lo pase del otro lado?
    Alguna idea?
    Desde ya muchas gracias.

    1. Hola Alejandro,

      Utilizamos el operador lookbehind negativo y encontramos por cada línea lo que va antes del =

      (^.*(?< !\=))

      luego el signo =

      (\=)

      luego todo lo que va antes del .

      (.*(?< !\.))

      y por último el .

      (\.)

      Y le cambiamos el orden

      $3$2$1$4

      Saludos