Recherche GREP InDesign (partie 1): expressions et motifs

tutoriel grep 1 splash

Introduction: ma première expression Les groupes, transpositions, chaînes et jeux de caractères Positions et conditions GREP Styles

Voici la première partie d’un tutoriel sur la recherche GREP avec InDesign. Bien que les GREP soient universel et se retrouvent dans plusieurs autres sphères tel que le JavaScript, PHP, C#, etc…, certaines choses montrées ici fonctionneront seulement dans InDesign. Je vous conseil d’avoir une page InDesign ouverte, copier les textes dans les encadrés et faire les recherche en même temps.

Que sont les GREPs

Il est difficile de décrire simplement ce que sont les GREPs. En fait, il s’agit d’expressions composées de métacaractères, permettant de retrouver des motifs ou pattern dans un texte. Mais que signifie ce charabia?

Les recherches GREP procurent plusieurs avantages par rapport à une recherche régulière. Par exemple, imaginez que vous avez un catalogue de 10, 1000 ou 10 000 produits et que tous les prix sont en anglais $2.39. Eh bien en une recherche GREP, c’est possible de tous les transformer en français 2,39$!

Terminologie GREP

Un motif

Les GREPs fonctionnent en motifs (ou patterns) qui sont en fait une suite logique de caractères ou de métacaractères. Prenons notre exemple de prix anglais que l’on voudrais transformé en français:

$2.39

Le motif recherché est: | signe de dollars | chiffres | point | chiffres |.

Un métacaractère

Il s’agit d’un caractère ou d’une combinaison de caractères qui en représente un autre. Par exemple, une tabulation \t, un retour de paragraphe \r ou un signe de dollars \$. Dans la fenêtre de recherche InDesign, vous aurez accès à tous les métacaractères disponibles à l’aide du menu @ .

Menu [@] de la fenêtre Find/Replace InDesign

Par exemple, pour chercher un chiffre quelconque dans ce menu, vous iriez dans @> Wildcards> Any Digit, et InDesign entrera le métacaractère \d dans le champ de recherche pour vous.

Courte liste de métacaractères utiles
Description Emplacement dans le menu Metacaractère
Un caractère quelconque @> Wildcard> Any character .
Un chiffre quelconque @> Wildcard> Any digit \d
Un caractère de mot @> Wildcard> Any word caracter \w
Une lettre capitale (majuscule) @> Wildcard> Any uppercase letter \u
Une lettre bas de casse (minuscule) @> Wildcard> Any lowercase letter \l
Un espace blanc quelconque* @> Wildcard> Any white space \s
Fin d’un paragraphe @> Location> End of Paragraph $
Retour de paragraphe ¶ @> End of Paragraph \r
Retour forcé ¬ @> Forced Line Break \n
Tabulation @> Tab \t
Zéro ou plusieurs @> Repeat> Zero or more time *
Un ou plusieurs @> Repeat> One or more time +
Peut être présent ou pas @> Repeat> Zero or one time ?
*En GREP, un espace blanc inclut tout les espaces (en space, em space, thin space, etc) mais parce que c’est une fonctionnalité qui est issue du web, ça inclut aussi les tabulations, retours forcés et retours de paragraphe.

N’hésitez pas à explorer et essayer les autres éléments de ces menus.

Une expression

Une expression est la combinaison de caractères (chiffre, lettres, ponctuation, etc.) et de métacaractères, représentant le motifs recherché.

Toujours avec l’exemple du remplacement dans les prix, l’expression ressemblerait à ceci: \$\d+\.\d\d, ce qui signifie | signe de dollars | chiffres | point | chiffre | chiffre |.

Une expression doit être simple tout en restant complète. Par exemple, si on n’incluait pas le signe de dollars dans le motif précédent, nous trouverions les prix, mais aussi 2:05.50 et 1.89 L.

Construire sa première expression

D’entrée de jeux, deux notions importantes:

  • les recherches GREP sont de base sensibles à la casse;
  • certains caractères sont utilisés entant que métacaractère.
Métacaractère!??

Par exemple, si vous aviez une expression $2.39 dans une recherche GREP, vous n’aurez aucun résultat car ça ne fait aucun sens en langage GREP! Si on interprète cette expression, elle demande de trouver la fin d’un paragraphe ($) suivi du chiffre 2, suivi de caractère quelconque (.), suivi de 3 et de 9!

Truc de construction d’expression GREP: commencer petit!

Si votre expression GREP ne donne aucun résultat, réduisez-la au plus simple en recherchant un seul élément à la fois. Puis, lorsque ça fonctionne, trouvez la section suivante.

Par exemple, tentons de construire une expression qui trouvera tous ces prix:
$2.39, $4.69, $8.79, $10.99, avec 2.02% d’intérêt pour 2014.
Commençons simple, trouvons les chiffres:

InDesign recherche grep chiffre

En GREP, \d est le métacaractère pour trouver un chiffre.

Cette recherche trouvera chacun des chiffres individuellement.

$2.39, $4.69, $8.79, $10.99, avec 2.02% d’intérêt pour 2014.

C’est un début, maintenant, tentons de trouver les chiffres et le point.

InDesign recherche grep prix incorrectement

À première vue, cette recherche devrait trouver ce que l’on cherche…

Cette recherche devrait trouver le premier chiffre, le point et les deux derniers chiffres mais elle trouve aussi le 2014

$2.39, $4.69, $8.79, $10.99, avec 2.02% d’intérêt pour 2014.

houston-nous-avons-un-probleme

Houston, nous avons DEUX problèmes!!

Problème 1. pourquoi le 10.99 n’est pas trouvé au complet

Bien sûr, nous ne demandons qu’un chiffre avant le point. Mais si nous demandons deux chiffres, les prix qui n’en ont qu’un seul ne seront pas trouvés. La solution, le métacaractère un ou plusieurs +. Simplement en ajoutant un + à la suite du premier \d, nous permettra de trouver tous les chiffres à gauche du point, qu’il n’y en ait un seul ou plus.

Donc, avec cette expression, le premier problème est résolu.

\d+.\d\d

Problème 2. pourquoi le 2014 est trouvé puisque j’ai demandé un point?!

Un indice, placez votre curseur vis à vis les métacaractères dans le carré de recherche. Vous verrez alors que le point ne trouve pas vraiment un point!

Tel que mentionné dans le tableau des métacaractères plus haut, le point signifie un caractère quelconque, incluant un chiffre!! Donc, l’expression précédente recherchait en fait | chiffres | caractère quelconque | chiffre | chiffre |. Le zéro de 2014 entre dans la définition de caractère quelconque.

Mais comment faire alors pour chercher un point? Dans les GREPs (et plusieurs autres langage codé), certains caractères utilisés en tant que métacaractère doivent êtres précédés d’un \, qui est appelé un caractère d’échappement.

Donc en ajoutant un caractère d’échappement, l’expression recherche vraiment un point:

InDesign recherche grep prix

Expression GREP qui trouve un prix.

Maintenant, pour terminer en beauté, ajoutons un signe de dollars pour éviter de trouver le nombre avec pourecentage. Mais attention! Le signe de dollars se retrouve dans la liste des métacaractères. Il faut dont qu’il soit précédé d’un \.

InDesign recherche grep prix et signe dollars

Notre expression GREP est complète en ajoutant le \$

Voilà, tous les prix sont trouvés avec cette expression

$2.39, $4.69, $8.79, $10.99, avec 2.02% d’intérêt pour 2014.

 

Trouver des mots

Maintenant que nous avons vu les chiffres, trouvons des lettres! En nous référant au tableau plus haut, créons une expression pour trouver chacun des mots dans la phrase suivante:

Les GREPs sont intégrés dans ces 2 applications populaires – InDesign et Dreamweaver!

Pour trouver un mot, on utilise les métacaractères \w et +.

Find what:

\w+

Les GREPs sont intégrés dans ces 2 applications populairesInDesign et Dreamweaver!

Bon, cette expression ne trouve pas le ou le !, ce qui est normal. Mais elle trouve aussi le chiffre 2 avec le métacaractère caractères de mot!

Donc, pour trouver seulement des mots, il faudrait utiliser les métacaractères \l et \u.Une expression qui pourrait fonctionner (avec les connaissance acquises jusqu’à maintenant), c’est celle-ci:

Find what:

\u*\l+

On y est presque! Notre expression trouve tous les mots mais elle sépare In et le Design car elle n’inclue pas de lettres capitales et les suivantes après les premières lettres bas de casse (\l+).

Les GREPs sont intégrés dans ces 2 applications populaires
InDesign et Dreamweaver!

Donc, l’expression finale qu’il nous faudrait serait:

\u*\l+\u*\l*

Dans certains cas, vous ne trouverez pas l’expression qui trouvera tout. Le but est toujours d’avoir une expression qui trouve le plus possible afin d’avoir le moins d’interventions manuelle à faire. Attendez-vous au début à passer plusieurs minutes sur une même expression. Mais à mesure que vous en ferez, la construction deviendra plus facile.

Exercices pratiques!

Cette première section montre comment faire de simples recherches (pas que je veuille décourager qui que ce soit avec le mot simple. Mais il faut passer par la base pour que les connaissances soit maîtrisée. Si vous ne voyez toujours pas le potentiel que peut apporter une recherche GREP, ne vous en faites pas. Dans la prochaine partie, nous verrons comment grouper et inter-changer des éléments trouvés.

Mais en attendant, pour mettre en pratique les notions apprises, voici quelques exercices. Glissez le curseur sur les mots [réponse] pour vous vérifier… mais pas de triche 😉

C’était le 1er ou le 2ème jour de juillet et le soleil plombait sur la ruelle. une glace… ou deux glaces à la vanille étaient de mise!

A partir du texte précédent, créez une expression qui trouve en une seule recherche…

  • le 1er et 2ème [réponse]
  • les mots glace et glaces [réponse]

Et la suite!?

Dans la seconde partie…Recherche GREP (partie 2)

  • les groupes;
  • transposition des éléments trouvés (tel que discuté dans le paragraphe d’introduction;
  • les chaînes de chiffres ou de caractères;
  • recherche selon l’emplacement de l’élément.

Loading...