GREP: formule qui recherche une correspondance avec la chaîne indiquée seulement si cette dernière est PRÉCÉDÉE du motif spécifié

crifan

Membre confirmé
24 Juin 2007
15
0
Bonjour,
J'ai un texte dans InDesign dans lequel, pour chaque chapitre, des numéros se trouvent parfois en fin de phrase après le point.
Exemple: "(...) et eurent beaucoup d'enfants. 1".

J'aimerais pouvoir sélectionner ces numéros pour les mettre en exposant.

Ma difficulté: comment sélectionner ces numéros?

J'ai trouvé la formule (?=motif) qui recherche une correspondance avec la chaîne indiquée seulement si cette dernière est SUIVIE du motif spécifié. Mais j'ai besoin d'une formule qui recherche une correspondance avec la chaîne indiquée seulement si cette dernière est PRÉCÉDÉE du motif spécifié.

Auriez-vous une piste?

Et sachant que les numéros vont de 1 à 100, y a-t-il un moyen de sélectionner toutes les occurrences ou bien doit-on se résigner à faire une recherche pour chaque nombre?

Bien cordialement,

Christian
 
Ce que tu cherches s'appelle « Look behind positif » et s'écrit (?<=)

En ce qui concerne les chiffres, il suffit d'écrire \d+, c'est-à-dire un chiffre qui se répète une ou plusieurs fois.
 
  • J’aime
Réactions: crifan
Ce que tu cherches s'appelle « Look behind positif » et s'écrit (?<=)

En ce qui concerne les chiffres, il suffit d'écrire \d+, c'est-à-dire un chiffre qui se répète une ou plusieurs fois.
Merci jmlevy!
J'ai donc créé la commande suivante: \d+(?<=.)
Il me sélectionne bien les nombres, mais pas forcément précédé d'un point. Qu'est-ce que j'ai fait faux dans ma formule?
 
C'est parce que tu as mal placé le look behind, il faut le mettre avant le \d+, comme ceci :
(?<=.)\d+
Et attention, tel que tu l'écris, ça ne fonctionnera que si le point est collé au chiffre (sans espace entre les deux).
 
C'est parce que tu as mal placé le look behind, il faut le mettre avant le \d+, comme ceci :
(?<=.)\d+
Et attention, tel que tu l'écris, ça ne fonctionnera que si le point est collé au chiffre (sans espace entre les deux).
Merci jmlevy!
J'ai essayé avec ta correction [\d+(?<=.)], mais le point n'est toujours pas pris en compte (il sélectionne des chiffres qui ne sont pas précédés d'un point. Dans l'exemple, le nombre est précédé d'une virgule).
Capture d’écran 2021-08-19 à 15.43.51.jpg
 
Ah oui, il faut que tu « échappes » le point en le faisant précéder d'un barre oblique inversée\ sinon le point signifie « n'importe quel caractère ».
 
  • J’aime
Réactions: crifan
Ah oui, il faut que tu « échappes » le point en le faisant précéder d'un barre oblique inversée\ sinon le point signifie « n'importe quel caractère ».
Merci jmlevy, ça marche!
Ça ne semblait pas fonctionner avec la barre, mais avec des crochets c'est tout bon! Ma formule finale : (?<=[.])\d+
 
Ah oui, il faut que tu « échappes » le point en le faisant précéder d'un barre oblique inversée\ sinon le point signifie « n'importe quel caractère ».
Je me creuse encore la tête pour arriver à sélectionner l'espace fautive devant certains numéros de note de bas de page (voir illustration)... Tu aurais une piste?
Capture d’écran 2021-08-19 à 16.28.21.jpg
 
[Hors de propos] Ordinairement, les appels de note se placent avant la ponctuation.
(C'est pour pimenter la requête GREP…) :D
 
  • J’aime
Réactions: crifan
Ça dépend du texte, est-ce qu'il peut y avoir des espaces devant des chiffres qui ne doivent pas être mis en exposant ?
Je ne suis pas sûr de comprendre ta question. Il y a des nombres dans le texte qui ne doivent pas être mise en exposant et qui sont précédés d'un espace.
Ce que je cherche à faire, c'est de remplacer ". 1" par ".1" (le 1 étant en exposant).

Y aurait-il une formule qui permettrait de sélectionner un espace se trouvant entre un point et un chiffre en style de caractère exposant?
 
Mais quelle formule GREP pour transformer ".2 " en "2. " (le 2 étant en exposant)?
Il faut rechercher un point suivi d'un à trois chiffres quelconques, ce qui donne :
\.\d+

Comme il faut les remplacer par eux-mêmes on doit ajouter des parenthèses pour en faire des expressions réutilisables :
(\.)(\d+)

Et dans remplacer on utilise :
$2$1
 
  • J’aime
Réactions: Vinzzz25
Il faut rechercher un point suivi d'un à trois chiffres quelconques, ce qui donne :
\.\d+

Comme il faut les remplacer par eux-mêmes on doit ajouter des parenthèses pour en faire des expressions réutilisables :
(\.)(\d+)

Et dans remplacer on utilise :
$2$1
Excellent, merci magicPDF!
J'ai constaté cependant que les styles étaient modifiés (point en exposant et un des chiffres en standard, voir illustrations). Y a-t-il moyen d'éviter cela?
Capture d’écran 2021-08-20 à 10.41.03.jpg
 
1. Supprime les exposants.
2. Permute les chiffres et les points.
3. Réapplique les exposants sur les chiffres.
Merci magicPDF(je pensais qu'il y avait peut-être une formule qui permettait de tout faire d'un coup...)!

Y a-t-il une formule (avec des fonctions conditionnelles?) qui me permettrait de traiter en même temps ces autres cas:

des humains.66,72
dégénératives chroniques.67,68,70
l’oxygénothérapie et autres.74,75,77, 89

EDIT: j'ai trouvé!!! :

(\.)(\d+\,)(\d+)
 
Dernière édition: