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ónCadena de búsquedaTexto de ejemploCoincidencias (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’ negativoInDesign (?!CS.*?)InDesign, InDesign 2.0, InDesign CS e InDesign CS2InDesign, 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’ positivoInDesign (?=CS.*?)InDesign, InDesign 2.0, InDesign CS, e InDesign CS2InDesign, 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)manzanaManzana manzana MANZANAManzanamanzanaMANZANA
(?i)También puede utilizar (?i:manzana)
Mayús./minús. desactivado(?-i)manzanaManzana manzana MANZANAManzana manzana MANZANA
(?-i)
Multilí­nea activado(?m)^\w+Uno Dos Tres Cuatro Cinco Seis SieteUno 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 SieteUno Dos Tres Cuatro Cinco Seis Siete
(?-m)
Lí­nea por lí­nea activado(?s)c.aabc abc abc abcabc 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.aabc abc abc abcabc abc abc abc
Ignorar espacio en blanco activado(?s)\w \w\wEl rápido zorro marrónElpido 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\wEl rápido zorro marrónEl rápido zorro marn
(?-x)
Repetir el número de vecesb{3} coincide 3 veces exactamenteabbc abbbc abbbbc abbbbbcabbc abbbc abbbbc abbbbbc
{ }b(3,} coincide al menos 3 vecesabbc 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 vecesabbc 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