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
 

jmlevy

Membre actif
29 Novembre 2007
481
38
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

crifan

Membre confirmé
24 Juin 2007
15
0
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?
 

jmlevy

Membre actif
29 Novembre 2007
481
38
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).
 

crifan

Membre confirmé
24 Juin 2007
15
0
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
 

jmlevy

Membre actif
29 Novembre 2007
481
38
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

crifan

Membre confirmé
24 Juin 2007
15
0
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+
 

crifan

Membre confirmé
24 Juin 2007
15
0
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
 

baron

Membre expert
Club iGen
22 Avril 2008
2 549
736
LLN
[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

crifan

Membre confirmé
24 Juin 2007
15
0
Ç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?
 

magicPDF

abracadabrantesque
Modérateur
Club iGen
5 Décembre 2007
7 785
788
43.93 N / 4.84 E
abracadabraPDF.net
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

crifan

Membre confirmé
24 Juin 2007
15
0
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
 

crifan

Membre confirmé
24 Juin 2007
15
0
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: