Rechercher des caractères par type

Jean loup FuszGrep, InDesign Leave a Comment

 3 minutes.

Lorsque l’on recherche une suite de caractère, il faut se demander à quel type de caractère nous avons affaire. Est-ce n’importe quel type de caractère ? Uniquement des caractères de type chiffres ? Ou tout sauf des caractères en capitale ?

Il existe en effet différents types de caractères que le GREP sais reconnaître : les chiffres, les caractères de mot, les capitales, les bas-de-casse, les espaces, les espaces verticaux, les espaces horizontaux et bien d’autres.

Passons en revue les différents types et la façon de les appeler avec le GREP.

N’importe quel type de caractère

.
Oui, un simple point.

Le point dans une REGEX signifie que l’on cherche n’importe quel type de caractère : une lettre, un chiffre, une espace. Une exception cependant, le point ne trouve pas les caractères de saut (saut de bloc, saut de colonne…)

Un chiffre quelconque

\d

Avec un d comme digit.

Remarquez le caractère qui précède le d. C’est un slash inversé (un backslash en anglais) que l’on obtient en maintenant les touches alt + shift + : sur Mac et Alt gr + / sur PC.

Cette regex va trouver UN chiffre à chaque recherche. Exemple avec le nombre 2 599,54 : la première recherche trouvera 2 599,54 ; la seconde recherche trouvera 599,54 puis 2 599,54 puis 2 599,54 puis 2 599,54 et enfin 2 599,54 pour la dernière recherche.

Observez que ni l’espace séparateur des milliers ni la virgule n’ont été trouvées. Seuls les chiffres sont détectés.

Une espace quelconque

\s

Avec un s comme space.

Ce métacaractère — c’est ainsi que l’on nomme les caractères utilisés dans le langage GREP — permet de rechercher toutes les espaces (fines, insécables, fixes…) ainsi que les différentes tabulations, considérées comme des espaces horizontales. Comme pour le type précédent, cette REGEX trouve une espace à la fois.

Un caractère de mot quelconque

\w

Avec un w comme word.

Attention à ce qu’on entend ici par mot : c’est une suite de caractères qui ne contient ni espace, ni ponctuation. Un chiffre est donc un caractère de mot et sera trouvé par ce métacaractère tout comme n’importe quelle lettre indépendamment de sa casse et de son accentuation.

Un caractère de mot quelconque est donc un caractère alphanumérique.

Autre particularité : le tiret-bas _ (underscore) est considéré comme un caractère de mot et sera donc également trouvé.

Pour 85_eF-0, le métacaractère trouvera successivement 85_eF-0, 85_eF-0, 85_eF-0, 85_eF-0, 85_eF-0 et 85_eF-0.
Seul le trait d’union ne sera pas trouvé, ne faisant pas partie des caractères de mot.

Une capitale quelconque

\u

Avec un u comme uppercase.

Accentuées ou pas, seules les lettres en capitale seront trouvées par ce métacaractère.

Exemple.

Une bas-de-casse quelconque

\l

Avec un l comme lowercase.

Accentuées ou pas, seules les lettres en minuscule seront trouvées par ce métacaractère.

Ex.

Les types opposés

Non venons de découvrir les principaux métacaractères permettant de rechercher des glyphes par type. Mais qu’en est-il si nous souhaitons rechercher TOUT SAUF un type ?

Vous savez désormais que \d trouve un chiffre. Pour trouver tout sauf un chiffre, c’est à dire l’opposé au type chiffre, on capitalise le d :

\D

On trouvera donc dans cet exemple : 85A69 puisque les chiffres sont exclus du résultat.

Ainsi \S permet de trouver tout sauf une espace, \W tout sauf un caractère de mot, \U tout sauf une capitale et \L tout sauf une minuscule.

Attention au piège : si \U permet de trouver tout sauf une capitale, il ne trouve PAS UNIQUEMENT les minuscules mais également la ponctuation, les espaces, etc.

Recherchez dans plusieurs types

On peut vouloir chercher n’importe quel caractère présent soit dans un type A, soit dans un type B. Il faut pour cela placer les deux types entre crochets.

[\u\l]

Cette REGEX permet de sélectionner n’importe quelle lettre, peut importe qu’elle soit en capitale ou en bas de casse. On peut traduire cette REGEX ainsi : Je recherche soit une capitale, soit une bas-de-casse.
Les crochets ouvrant et fermant [] signifient « jeu de caractères ».

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *