GREP, quelques requêtes

Cet article est un regroupement de différentes requêtes GREP pouvant être utiles…

Je vous suggère tout d’abord de (re)lire l’article Grep et InDesign sur ce blog.

Ensuite, je vous propose ce site: Regex Tester. Il permet de tester votre requête GREP et de voir directement le résultat sur un texte. Attention… certaines regex sont propres à InDesign et ne fonctionneront pas sur ce site (les espaces insécables, les fines…).

Rappel avant de commencer

  • \d permet de rechercher un chiffre.
  • . (un point) recherche n’importe quel caractère.
  • Les accolades {} permettent de dire le nombre de fois que l’on recherche un motif.
    Par exemple, .{3} recherche exactement 3 caractères. Lorsqu’il y a deux chiffres dans l’accolade séparés par une virgule {x,y}, cela signifie qu’on recherche le motif au moins x fois et au plus y fois.
    Dans l’expression .{2,7}, on recherche au moins deux caractères et au plus sept caractères.
  • La barre verticale | correspond à “ou”. Par exemple : (Madame|Monsieur) Durant va rechercher Madame Durant ou Monsieur Durant.

Changer l’ordre d’une date

Il arrive que l’on reçoive un texte avec des dates encodées à l’américaine : mois/jour/année.

Voici une requête pour remettre cela dans l’ordre (jour/mois/année) :

  • Rechercher : (\d{1,2})/(\d{1,2})/(\d{4})
  • Remplacer : $2/$1/$3

Explications

Je cherche un ou deux chiffres \d{1,2}, suivi d’un /, suivi d’un ou deux chiffres \d{1,2}, suivi d’un /, suivi de 4 chiffres \d{4}.
Chaque groupe de chiffres est entre parenthèses, ce qui correspond à des sous-expressions (numérotées de 1 à 3 dans notre cas). Il suffit ensuite de permuter l’ordre des deux premières sous-expressions, et de garder la troisième à sa place.
Je remplace par le 2e groupe, puis le 1er et enfin le 3e.


Il est impératif de garder ensemble un montant et son unité monétaire. Par exemple, 350 € doit former un groupe insécable. Il est hors de question d’avoir le 350 au bout d’une ligne et le à la ligne suivante. Cela perturbe complètement la lecture.

Grouper un montant et son unité monétaire

Il y a plusieurs possibilités pour grouper un montant et son unité monétaire. Je vous en présente une ici assez simple à mettre en place.

  • Rechercher : (\d) (€|$|K€|EUR|USD|CHF|GBP)
  • Remplacer : $1~S$2

Explications

Je cherche un chiffre (\d), suivi d’une espace, suivi de ou $ ou K€ ou EUR ou USD ou CHF ou GBP.
Et je remplace par le premier groupe trouvé $1, suivi d’une espace insécable ~S, suivi du deuxième groupe trouvé $2.

Notes

  • pour les unités de poids (kg), de longueurs (km), de surfaces (cm2), de volumes (m3), la requête est (\d) (kg|hg|dag|g|dg|cg|mg|km|hm|dam|m|dm|cm|mm).
  • si l’unité se trouve devant (comme le $, par exemple), la requête est simplement inversée : ($) (\d)

Dans les deux cas, le champ “remplacer” ne change pas : $1~S$2


Changer les apostrophes et guillemets droits en apostrophes et guillemets typographiques

Si vous avez un document dans lequel il y a des apostrophes droites et/ou des guillemets droits que vous désirez remplacer par des apostrophes et guillemets typographiques, voici un requête pour faire un changement complet.

Tout d’abord, dans les préférences, assurez-vous de cocher “Utiliser les guillemets typographiques” dans le menu “Texte”.

Préférences - Utiliser les guillemets typographiques
Utiliser les guillemets typographiques

Ensuite, faites une recherche GREP :

  • Rechercher : '|"
  • Remplacer : $0

Explication

Je recherche une apostrophe droite ' ou | un guillemet droit " et je remplace par le résultat de ma recherche $0.

InDesign va automatiquement remplacer les apostrophes et guillemets droits en apostrophes et guillemets typographiques grâce à l’option cochée précédemment.


Insérer des espaces fines entre les chevrons

C’est à peu près la même chose que pour le changement de date… on travaille avec les sous-expressions.

  • Rechercher : («)(.+?)(»)
  • Remplacer : $1~<$2~<$3

Explications

Je recherche le guillemet ouvrant, un ou plusieurs caractères (correspondance la plus courte [voir ici pour les explications des répétitions]) et le guillemet fermant. Et je remplace par le 1er groupe trouvé $1, suivi d’une espace fine ~<, suivi du 2e groupe trouvé $2, suivi d’une espace fine ~<, suivi du 3e groupe trouvé $2.


Pour finir cet article, je vous conseille de rejoindre l’excellent groupe Facebook TreasuresofGrep créée par le Canadien Jean-Claude Tremblay.

8 Réponses à “GREP, quelques requêtes”

  1. Jean-Claude Tremblay dit : Répondre

    Bel article Olivier! Merci pour la mention du groupe «The Treasure of GREP».

    1. Pas de quoi, Jean-Claude. Surtout que je t’ai volé l’idée des guillemets typographiques…

  2. Bonjour,
    Je découvre votre blog fort intéressant et le monde selon Grep 🙂
    Je voulais savoir si vous connaissiez la formule magique pour supprimer l’espace entre la lettre et l’apostrophe. Exemple : L ‘offre. En retravaillant le texte, suite à une importation de celui-ci j’ai donc cet espace qui s’est inséré.

    Bonne continuation !
    Et merci d’avance pour votre réponse.
    Ronan

    1. Bonjour Ronan,
      Vous pourriez utiliser:
      rechercher: (?<=.)\h(')
      remplacer:
      Mais… C'est assez délicat. Dans certaines langues, comme le néerlandais, il arrive d'avoir des espaces apostrophes. Par exemple: Hij ging ’s avonds naar huis (Il est rentré chez lui le soir).
      Je vous conseille donc vivement de ne pas faire un “tout remplacer”.

  3. Bonjour !
    Super article et extraordinaire blog ! Tous les liens sont pertinents et les articles sur le GREP répondent à 90% de mes réponses !
    Sur une mise en page d’un ouvrage je suis passé de 5 bonnes heures à… moins d’une heure ! Que du temps gagné pour explorer votre blog !
    Beavo et merci !

    1. Merci pour ce gentil petit mot.
      Quels sont les 10% manquants pour le grep?
      O.

  4. Bonjour !
    Si je peux me permettre, la requête ‘|” recherche en fait _tous_ les guillemets, simples ou doubles (y compris les guillemets « français », “anglais” et „allemands“).
    Si on souhaite restreindre la sélection aux guillemets droits uniquement, on peut utiliser ~’|~”
    Cordialement !

    1. Merci pour cette remarque fort pertinente!

Laisser un commentaire