Recherche GREP InDesign (partie 3): position et conditions

tutoriel grep 3 splash

Introduction: ma première expression Les groupes, transpositions, chaînes et jeux de caractères Positions et conditions GREP Styles
Maintenant que nous sommes hot avec les recherches de caractères quelconques, métacaractères et les groupes, nous allons nous attaquer au positionnement et aux conditions. Mais avant, voici le tableau des métacaractères que nous utiliseronts:
Nouveaux métacaractères GREP pour cette section
Description Emplacement dans le menu Metacaractère
Insensible à la casse @> Modifiers> Case insensitive (?i)
Début d’un mot  @> Locations> Beginning of word \<
Fin d’un mot @> Locations> End of word \>
Limite d’un mot @> Found> Word boundary \b
Début d’un paragraphe @> Locations> Beginning of paragraph ^
Fin d’un paragraphe @> Locations> End of paragraph $
Ou @> Match> Or |
Lookbehind positif @> Match> Positive lookbehind (?<=)
Lookbehind négatif @> Match> Negative lookbehind (?<!)
Lookahead positif @> Match> Positive lookahead (?=)
Lookahead négatif @> Match> Negative lookahead (?!)
†Peut-être placé au début ou à la fin d’un mot

Position de l’élément rechercher

En GREP, c’est possible de trouver un élément en spécifiant sa position. On s’entend, je parle ici du début ou de la fin d’un paragraphe, sinon, c’est le début ou la fin d’un mot.

Dans un paragraphe

En ajoutant un ^ devant notre expression, cela signifie que l’élément doit se trouver au début du paragraphe. Si l’on voudrais trouver le premier mot de chacun des paragraphes suivants,

Ceci est un premier paragraphe.

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

nous pourrions penser que l’expression ressemblerait à ceci:

Find what:

^.+
[@]

Ceci est un premier paragraphe.

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

Oups! Notre recherche n’est pas assez précise, nous devons la raffiner. Si Any character ne fonctionne pas, nous pourrions essayer avec Any word caracter \w,

Find what:

^\w+
[@]

Ceci est un premier paragraphe.

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

Cette expression récupère le premier mot du premier paragraphe, mais pas le second puisque le « n’est pas considéré comme un caractère de mot.

Pour contrer cela, je suggère d’utiliser .? qui va englober tous les caractères qui pourraient de trouver en début de paragraphe. On pourrait ajouter un .? aussi à la fin de notre expression pour englober aussi les caractères qui, comme dans ce cas-ci, se trouve à la fin du mot.

Find what:

^.?\w+?
[@]

Ceci est un premier paragraphe.

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

Bien entendu, vous pourriez rencontrer des mots composés qui ne serait pas récupérés par cette expression. Mais c’est là que l’on doit être créatifs et trouver une solution qui récupère tout, ou le plus possible> Garder le moins d’exceptions à changer manuellement.

À la fin d’un paragraphe

C’est le même principe que pour le Début de paragraphe mais on place le $ à la fin de l’expression.

Si je prends l’exemple précédent mais que j’enlève le point à la fin de la première phrase. Donnons-nous comme défi de trouver les paragraphes qui n’ont pas de point à la fin, juste pour le plaisir 😉

Ceci est un premier paragraphe

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

L’expression peut-être aussi simple que:

Find what:

\w$
[@]

Change to:

$0.
[@]

Ceci est un premier paragraphe

«Segundo» veux dire deuxième en espagnol, mais je ne parles pas vraiment cette langue!

Cette expression ajoutera un point aux paragraphe qui n’en ont pas. Je ne m’éterniserai pas la-dessus, puisque nous verrons de meilleurs façons de trouver ce genre d’éléments.

Un ou l’autre… ou l’autre

La première condition est toute simple, c’est un OU. Comme le démontre l’exemple suivant:

Mon animal favori est un chat. J’aime bien les chats car ils sont doux. C’est si mignon un petit chaton, imaginez maintenant un groupe de chatons!

Maintenant, si je change d’avis et que ce sont les ours, je pourrais avoir une expression comme celle-ci:

Find what:

chat(s|tons?)?
[@]

Mon animal favori est un chat. J’aime bien les chats car ils sont doux. C’est si mignon un petit chaton, imaginez maintenant un groupe de chatons!

Change to:

ours
[@]

Mon animal favori est un ours. J’aime bien les ours car ils sont doux. C’est si mignon un petit ourson, imaginez maintenant un groupe de oursons!

Je sais, de oursons ça ne fonctionne pas. Mais vous voyez tout de même ce que peut faire le OU. En une recherche, je trouve 4 mots

  • chat
  • chats
  • chaton
  • chatons

Un merci spécial à Shteen pour m’avoir aidé à trouver des noms d’animaux qui finissent en «on» 😉

Conditions, valider ce qui précède ou ce qui suit

Lookbehind positif: tenir compte de ce qui précède ce que l’ont cherche

Dans l’exercice précédent, nous avons vu le « ou » qui permet de dire que un ou l’autre des caractères peut être présent. Nous pouvons aussi mettre des mots complet avec ce métacaractère OR. Mais ce qu’il y a c’est que tout ce qui est trouvé est pris en compte.

Que faire si nous voulons, par exemple, trouver les carrés et les cubes et que nous voulons les formater en exposants?

2 cm2 et 4 cm3

2 cm2 et 4 cm3

Nous ne voulons certainement pas que le chiffre lui-même soit formaté.

Dans les GREPs, il existe une fonction pour lui donner la condition que si le caractère est précédé de quelque chose. Cela s’appelle le Positive lookbehind (?<=).

Positive lookbehind: Exemple 1

Alors l’expression, dans ce cas-ci, doit rechercher une lettre bas de casse qui est précédée d’un chiffre. Cette lettre sera placée à l’extérieur de la parenthèse.

Note: Ce qui est dans la parenthèse, dans ce cas-ci, ne sera pas considéré comme un groupe mais une condition.

Donc, avec cette expression:

Find what:

(?<=\l)\d
[@]

Change to:

 
[@]

formatage superscript

2 cm2 et 4 cm3

En laissant le Change to: vide et en appliquant un formatage superscript, on obtient les chiffres en exposants. Dans le champs Change to:, un $0 aurait aussi fonctionné, puisque ce qui se trouve dans la parenthèse, dans ce cas-ci, n’est pas retenu.

Positive look behind: Exemple 2

Ce n’est pas une notion qui passe facilement habituellement alors voici un autre exemple.
Disons que vous désirez trouver toutes les lettres « c » précédées d’un « M », pour que les « MC » deviennent « Mc », mais pas pour la marque de commerce.

LES CERF-VOLANTS MCFLYMC SONT LES MEILLEURS!

Dans ce cas, il faudra deux expression GREP: une pour transformer le Mc et une autre pour formaterle symbole MC.

La première expression serait:

Find what:

(?<=\bM)C
[@]

Change to:

c
[@]

LES CERF-VOLANTS MCFLYMC SONT LES MEILLEURS!

Encore une fois, la parenthèse n’est pas considérée comme un groupe. La condition est que la lettre « c » doit être précédée de la lettre « M », et cette lettre « M » doit se trouver à la limite du mot.

J’ai ajouté limite du mot \bpour éviter d’attraper la marque de commerce.

Pour trouver le MC, la seconde expression serait:

Find what:

(?<=[\l\u])(?i)mc\b
[@]

Change to:

 
[@]

formatage superscript

Je spécifie donc que le mc doit se trouver devant une lettre quelconque, et aussi il doit e trouver à la limite d’un mot. De cette façon, il ne trouve pas le McFly

J’ai utilisé le Case insentitive (?i) pour qu’il ne tienne pas compte de la casse, mais mc|MC aurait aussi fonctionné.

Positive look behind: Exemple 3

Allons y pour un dernier. Vous avez reçu un texte bordélique et toutes les abréviation des ordinaux (è, ème et eme) sont différents et ne sont pas en exposant. Votre mission, si vous l’acceptez, est de toutes les remplacer par un e.

Le 3è précèdera le 4ème. Et le 5eme suivera le 4e.

L’expression serait:

Find what:

(?<=\d)(ème|eme|è|e)
[@]

Change to:

e
[@]

formatage superscript

Le 3è précèdera le 4ème. Et le 5eme suivera le 4e.

L’ordre est important car il s’arrêtera à la première condition qu’il trouve. Si l’ont avait utilisé cette expression:

Find what:

(?<=\d)(è|e|ème|eme)
[@]

Il se serait simplement arrêté aux è|e.

Le 3è précèdera le 4ème. Et le 5eme suivera le 4e.

Lookahead positif: tenir compte de ce qui suit

Lookahead signifie ce qui suit. Donc, la portion d’expression sera positionnée à la suite de ce que nous voulons trouver.

Par exemple, vous avez reçu un texte et toutes les ponctuation hautes n’ont pas d’espaces fines (dont le métacaractère InDesign correspond à ~<).

Diancre! Mais que vais-je faire?
Voici mes choix:
• me retirer;
• me continuer;
• m’associer.

L’expression serait:

Find what:

\w(?=[?!:;])
[@]

Change to:

$0~<
[@]

Diancre! Mais que vais-je faire?
Voici mes choix:
• me retirer;
• me continuer;
• m’associer.

En français, l’expression cherche un caractère de mot \w, qui est suivi de l’un ou l’autre des ?!:;

Lorsqu’il trouve ce caractère, nous le remplaçons par lui-même $0 et ajoutons à la suite une espace fine ~&lt.

Lookbehind ou Lookahead négatif: tenir compte de ce qui n’est pas

Nous avons vu les Lookbehind et Lookafter positifs. Mais il y a aussi les version négative. Dans la version négative, ce qui précède ou suis ne dois pas se trouver derrière ou devant.

En terminant…

Avant de conclure, je dois préciser que dans le cas d’un Lookbehind ou d’un Lookafter, nous devons êtres précis dans la quantitée. Les métacaractères ?, * et + ne fonctionnent pas. Par contre, les { } sont permis mais sans la virgule.

Donc avec la virgule, ces expressions ne fonctionneront pas

Find what:

(?<=\d*)\d
[@]

Find what:

(?<=\d+)\d
[@]

Find what:

(?<=\d{2,3})\d
[@]

Et la suite!?

À venir…Recherche GREP (partie 4)

  • GREP Styles, le formatage automatiques.
  • expression dans le style de paragraphe qui formate le texte à mesure qu’il est entré.

Cliquez sur l’une de ces icônes afin de savoir quand paraîtra la suite de ce tutoriel.

logo groupe tma logo facebook logo twitter


Loading...