Forums Développement Multimédia

Aller au contenu

Expression GREP

PAO InDesign Acrobat PDF

13 réponses à ce sujet

#1 Stef-casa

  • Guests

Posté 09 June 2010 - 15:33 PM

Bonjour,

Je cherche une expression GREP qui me permette de faire la chose suivante :

Rechercher tout les chiffres ayant une mise en forme comme suit : 2 000
Et les remplacer par une mise en forme 2 000 (avec un espace fine entre le "2" et les "000".

Avec l'expression GREP suivante : (espace)\d(espace) je trouve mes chiffres mais je ne sais pas quelle expression GREP mettre pour garder mon chiffre et remplacer l'espace normal par un espace fine.


Plus généralement, quelqu'un sait ou je pourrait trouver une liste d'expression GREP qui me donne la possibilité de faire des recherches sur des chiffres ou des mots différents (le principe de la variable)

Je ne sais pas si ma demande est claire.

Merci pour vos réponses
Stef

#2 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 09 June 2010 - 16:51 PM

Bonjour,

Pour ajouter une espace dans l'exemple précis,
Rechercher: (\d)~s(\d)
Remplacer par: $1~<$2
Explications : mettre entre parenthèse signifie créer une sous-expression. Cette sous-expression peut être rappelée dans le champ "Remplacer par" par la variable de type "Trouvé" composée du signe $ suivi d'un chiffre. Le chiffre correspond au nombre et à la place des sous-expressions dans le champ "Rechercher".
Quant à une liste d'expressions régulières on trouve des sites comme Regular Expression Library, mais pas sûr qu'elles correspondent à vos besoins et soient adaptées à InDesign. De toute façon, il y a très peu de formules universelles.
Le mieux est encore de se constituer sa propre librairie en enregistrant les requêtes.
Bonne journée

#3 Stef-casa

  • Guests

Posté 09 June 2010 - 17:28 PM

Bonjour,

Merci pour la réponse mais cela ne fonctionne pas.

L'expression remplace bien un espace normal par un espace fine mais insère aussi les $1 et $2.

Dans mon exemple, je voudrai que l'expression trouve toutes les formulations de nombres (2 000, 34 000, 12 756, etc… ) et se contente simplement de remplacer l'espace par un espace fine en concernant, bien sur le nombre d'origine.

Je pense que je m'étais mal exprimé dans mon premier message.

Merci
Stef

#4 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 09 June 2010 - 18:39 PM

En mode GREP ? Impossible que la regex retourne $1 et $2 en lieu et place de chaque chiffre entourant l'espace.
Autrement, c'est soit un bug soit l'expression placée dans le mode Texte.

#5 Stef-casa

  • Guests

Posté 09 June 2010 - 23:55 PM

Voir le messageLaurent Tournier, le 09 June 2010 - 18:39 PM, dit :

En mode GREP ? Impossible que la regex retourne $1 et $2 en lieu et place de chaque chiffre entourant l'espace.
Autrement, c'est soit un bug soit l'expression placée dans le mode Texte.

Laurent,

Je ne sais pas où le problème se situe, mais en vérifiant bien, la regex me retourne même un message en me disant qu'il ne trouve aucune occurrence.

Etrange, je suis à la lettre tes instructions mais rien ne fonctionne… est-ce que je loupe quelque chose?

Stef

#6 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 10 June 2010 - 11:02 AM

Voir le messageStef-casa, le 09 June 2010 - 23:55 PM, dit :

Laurent,

Je ne sais pas où le problème se situe, mais en vérifiant bien, la regex me retourne même un message en me disant qu'il ne trouve aucune occurrence.

Etrange, je suis à la lettre tes instructions mais rien ne fonctionne… est-ce que je loupe quelque chose?

Stef

Bonjour,

Ci-joint une capture d'écran avec, à gauche, mes nombres avec comme séparateur une espace simple ; à droite, l'espace fine insérée.
Dans la regex, entre (\d) et (\d), il y a simplement une espace sécable (barre d'espace).

Si tes chiffres sont séparés par une espace insécable fixe, recherche (\d)~s(\d) ; par une espace insécable, (\d)~S(\d)
Tu peux combiner les trois espaces : (\d)[~s~S ](\d)
Normalement, ça devrait fonctionner. Sinon, je ne comprends pas. Une capture d'écran ?

Miniature(s) jointe(s)

  • Image attachée: separateur.png


#7 Stef-casa

  • Guests

Posté 10 June 2010 - 11:52 AM

Voir le messageLaurent Tournier, le 10 June 2010 - 11:02 AM, dit :

Bonjour,

Ci-joint une capture d'écran avec, à gauche, mes nombres avec comme séparateur une espace simple ; à droite, l'espace fine insérée.
Dans la regex, entre (\d) et (\d), il y a simplement une espace sécable (barre d'espace).

Si tes chiffres sont séparés par une espace insécable fixe, recherche (\d)~s(\d) ; par une espace insécable, (\d)~S(\d)
Tu peux combiner les trois espaces : (\d)[~s~S ](\d)
Normalement, ça devrait fonctionner. Sinon, je ne comprends pas. Une capture d'écran ?

Laurent,

Merci !! Ca marche en effet. Je soupçonne un bugue au niveau de mon fichier car en faisant l'exercice sur un fichier propre et en reprenant ton exemple, tout fonctionne.

Merci encore pour le coup de main.
Stef

#8 Stef-casa

  • Guests

Posté 10 June 2010 - 12:30 PM

Voir le messageStef-casa, le 10 June 2010 - 11:52 AM, dit :

Laurent,

Merci !! Ca marche en effet. Je soupçonne un bugue au niveau de mon fichier car en faisant l'exercice sur un fichier propre et en reprenant ton exemple, tout fonctionne.

Merci encore pour le coup de main.
Stef

Dans le même ordre d'idée, comme puis-je chercher une série de caractère (ici des ? des ! des ;) pour appliquer devant chaque caractère une espace fine?

Je suppose qu'il faut utiliser l'expression (\d) pour y arriver, mais si le "d" désigne des nombres, que dois-je mettre pour désigner des ? ou des ! etc.

Merci
stef

#9 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 10 June 2010 - 14:41 PM

Voir le messageStef-casa, le 10 June 2010 - 12:30 PM, dit :

Dans le même ordre d'idée, comme puis-je chercher une série de caractère (ici des ? des ! des ;) pour appliquer devant chaque caractère une espace fine?

Je suppose qu'il faut utiliser l'expression (\d) pour y arriver, mais si le "d" désigne des nombres, que dois-je mettre pour désigner des ? ou des ! etc.

Merci
stef
sous réserve de Laurent, (\?|\!) ?
En gros : on échappe le caractère avec antislash \? pour dire qu'on veut le caractère ? et pas le metacaractère
(x|y) x ou y
mais je n'ai pas testé

#10 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 10 June 2010 - 14:58 PM

Voir le messageStef-casa, le 10 June 2010 - 12:30 PM, dit :

Dans le même ordre d'idée, comme puis-je chercher une série de caractère (ici des ? des ! des ;) pour appliquer devant chaque caractère une espace fine?

Salut,

ceci devrait t'intéresser : http://abracadabrapd...p?lng=fr&pg=450

;)
Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#11 Stef-casa

  • Guests

Posté 18 June 2010 - 14:55 PM

Bonjour,

Je fais un peu upper le sujet, car je suis toujours dans mes recherche d'expression GREP. J'ai effectivement utilisé le script "FindChangeByList" pour nettoyer mon texte, mais comme je n'aime pas trop faire des trucs automatique sans comprendre, j'en rajoute une couche. (au passage merci pour l'info, le script est très utile)

Je veux maintenant rechercher dans mon texte tous les signes : "?" "!" ";" ":" précédés d'un espace normal. Pour ensuite remplacer l'espace normal par un espace fine.

Donc je recherche la chaine de caractère suivante : espace normal[?!;:]
et je veux remplacer par : ~<$0

Ca coince au niveau du "$". Le problème est que la regex m'insère bien mon espace fine mais me conserve aussi mon espace normal. Comment faire en sorte qu'il élimine bien mon espace normal et m'insère mon espace fine?

Merci à vous
Stef

#12 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 18 June 2010 - 21:11 PM

Citation

comme je n'aime pas trop faire des trucs automatique sans comprendre
C'est bien pour ça que toutes les lignes d'instructions sont soigneusement commentées…


Citation

Je veux maintenant rechercher dans mon texte tous les signes : "?" "!" ";" ":" précédés d'un espace normal. Pour ensuite remplacer l'espace normal par un espace fine.
C'est ce que fait le script quand il utilise mon fichier d'instructions !

Maintenant, si c'est la procédure qui t'intéresse, c'est dans le fichier "Lisez-moi" (extrait) :

1- On part d’un texte dans lequel on ne sait pas s’il y des espaces là où il en faudrait, ni là où il n’en faudrait pas, ni s’il y a un mélange des deux.
On commence donc par ajouter des espaces partout, y compris là où il n’en faut pas, pour être sur qu’il y en ait au moins une devant toutes les ponctuations.

2- On continue en remplaçant toutes les doubles espaces par une seule. Ce qui permet au final de connaître le nombre d’espaces placées devant chacune des ponctuations (une seule).

3- On termine en remplaçant les espaces placées devant les ponctuations hautes, devant les ponctuations doubles, entre les guillemets, etc, par des espaces fines (insécables). Et en supprimant les espaces devant les ponctuations simples.

:neutral:

Modifié par JRB, 18 June 2010 - 21:12 PM.

Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#13 laurent.tournier

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 81 messages

Posté 19 June 2010 - 13:51 PM

Bonjour,

Pour la ponctuation, le script de JRB fonctionne parfaitement et sa démarche est bien expliqué.
Pourquoi la regex ne fonctionne pas correctement ?
Tout simplement parce que $0 équivaut à toute la chaîne du champ Rechecher. Dans ton cas à l'espace simple suivie d'un des quatre signes de ponctuation.
Il faudrait isoler le jeu de caractère en l'insérant dans une sous-expression: ([?!;:]) et la rappeler par $1 précédé de l'espace fine.
Bon week end

#14 Stef-casa

  • Guests

Posté 21 June 2010 - 11:28 AM

Voir le messageLaurent Tournier, le 19 June 2010 - 13:51 PM, dit :

Bonjour,

Pour la ponctuation, le script de JRB fonctionne parfaitement et sa démarche est bien expliqué.
Pourquoi la regex ne fonctionne pas correctement ?
Tout simplement parce que $0 équivaut à toute la chaîne du champ Rechecher. Dans ton cas à l'espace simple suivie d'un des quatre signes de ponctuation.
Il faudrait isoler le jeu de caractère en l'insérant dans une sous-expression: ([?!;:]) et la rappeler par $1 précédé de l'espace fine.
Bon week end

Effectivement, tout marche impec, merci beaucoup à tous



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)