Contrairement à ce que l’on aurait pu penser eu égard à ma léthargie, le GREP, dans les versions CS6 et CC (2014) d’InDesign, s’est enrichi de nouveaux métacaractères. La mise au jour de ces caractères spéciaux, non documentés, on la doit à des utilisateurs d’InDesign de plus en plus enclins à utiliser les expressions régulières. Je salue ici Jean-Claude Tremblay et Michel Allio (alias Obi-wan Kenobi) pour les caractères présentés.

\v et \h : espaces verticales et horizontales

Le métacaractère \v sélectionne les espaces verticales, à savoir 

  • la fin de paragraphe \r
  • le saut de ligne forcé \n
  • et les caractères de saut (de colonne ~b, de bloc ~R, de page ~P, impaire ~L et paire ~E), sauf le saut de ligne conditionnel ~k.

Le métacaractère \h sélectionne les espaces horizontales, à savoir 

  • les 12 espaces (cadratin ~m, demi-cadratin  ~>, sans alinéa ~f, ultrafine ~|, insécable ~S, insécable à chasse fixe ~s, fine ~<, de lisibilité ~/, de ponctuation ~., tiers d’espace ~3, quart d’espace ~4 et sixième d’espace ~%), 
  • et la tabulation \t.

\K : un lookbehind sans limite de caractères

Habituellement, pour sélectionner une chaîne de caractères par rapport à une chaîne qui la précède, on utilise le lookbehind positif (?<=). L’expression régulière (?<=année) \d{4} permet ainsi de sélectionner des millésimes à quatre chiffres précédés du mot « année ». 
Mais parce que cet opérateur ne marche qu’avec un nombre de caractères fixe, le lookbehind (?<=années?), supposé prendre aussi en compte le pluriel, est inopérant. 
En d’autres termes, pour sélectionner les millésimes aussi bien pour « les années 1950 » que « l’année 1964 » il faudrait recourir à une alternative comme ((?<=années)|(?<=année)) \d{4}.
Le métacaractère \K permet de contourner cette limite du lookbehind. Tout ce qui précède \K peut être de longueur variable. 
La regex années? \K\d{4} permet de retrouver les millésimes précédés du mot « année » au pluriel et au singulier.
Désormais, quand je dois retrouver tous les prénoms dont le nombre dynastique qui suit est en petites capitales au lieu de grandes capitales, j’utilise une regex de type \u\l+ \K[ixv]+\b, associée au script de Peter Kahrel pour modifier la casse, pour tout corriger.

(?R) = expression récursive

Qui n’a pas eu un jour besoin de formater, par exemple en italique, du texte entre parenthèses ? Rien de plus facile avec une regex de type \([^()]+\)
Mais comment procéder en présence de chaînes imbriquées du genre (xxx (xxx) xxxxx (xx) xxx) ? En d’autres termes, comment sélectionner l’ensemble de la parenthèse ?
À défaut d’expliquer ici les subtilités et le mode de fonctionnement du métacaractère (?R), la regex \(([^()]|(?R))*\) répond au problème. À utiliser sans modération. (Merci à Rudi Warttmann d’avoir relevé une grosse coquille sur la regex, corrigée le 07/11/2015.) 
PS : pourquoi ce billet après une si longue période de silence, bien que je reste plutôt actif sur Twitter ? En découvrant ce matin, sur ce même réseau, qu’à la demande de Marc Autret (indiscripts.com), indigrep figurait désormais sur la page Grep du site InDesignSecrets, je me suis dit qu’il fallait quand même faire un petit effort !