abracadabraPDF › Forums › Support & assistance › FindChangeByList
- Ce sujet est vide.
-
CréateurSujet
-
26 mars 2020 à 05:33 #46256RonflexMembre
Je tente d’écrire une requête GREP dans le fichier FindChangeByList.txt.
La requête fonctionne dans le Rechercher et remplacer d’InDesign : [A-Z]u+ Remplacer par : t$0Je suis incapable de la faire fonctionner dans le script. Qu’est-ce que je fais de pas correct ?
-
CréateurSujet
-
AuteurRéponses
-
26 mars 2020 à 16:44 #67147MerlinMaître des clés
Bonjour
Merci de joindre le fichier texte que je puisse l’examiner, et de m’indiquer quelle est la ligne modifiée.
:Smiley15:27 mars 2020 à 01:17 #67148RonflexMembreJ,ai une liste importée dans In Design qui contient notamment des infos comme celles du fichier Listes_genealogiques_Exemples.txt (elle est nettement plus longue que celle-ci entre 4 et 20,000 entrées par fichier.)
SI je fais un Recherche et Remplacer et que je choisis Recherche GREP, J’écris dans Rechercher : [A-Z]u+ et puis j’écris dans Remplacer : t$0 Je roule la requête : TOUT REMPLACER et un tabulateur apparait entre Rose et DAMOUR ou Pierre et LAROCHE et ainsi de suite ou tout autre nom écrit ainsi.
Comme j’ai une vingtaine de requêtes différentes à effectuer sur le fichier, et que je dois effectuer ce travail assez souvent, avant de l’exporter , j’ai pensé les rouler avec le script FindChangeByList. Mes premières requêtes fonctionnent bien (elles sont inactives présentement car je testait la dernière) mais je suis incapable de faire rouler la dernière instruction.
J’écris (Voir le fichier Find_…txt) : grep {findWhat:”[A-Z]u+)”} {changeTo:”t$0“} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
Ca ne fonctionne pas.
Est-ce que c’est parce que le script ne s’occupe que de typographie ou parce que j’ai écrit la commande comme un béotien ?P.S.
J’ai découvert un script DoQUeryList,qui est un pis aller. (Pas si pire comme aller, je l’avoue :Smiley01: ). Il me permet d’automatiser beaucoup plus l’exécution de ma séquences de requêtes que la fonction Rechercher et Remplacer d’InDesign. J’aimerais mieux l’exécuter avec FindChangeByList mais il y a souvent un monde entre je veux et je peux. Donc, le problème est maintenant pour moi plus théorique puisque je peux fonctionner beaucoup plus vite. Puis-je écrire n’importe quelle commande GREP dan FindChangeByList ?Merci à l’avance.
Ronflex27 mars 2020 à 15:24 #67149MerlinMaître des clésJe vais examiner ça de plus près ce weekend, j’ai bien un soupçon mais dans ce cas ça ne devrait pas marcher non plus en rechercher-remplacer… :Euuuh: :doute:
Quoi qu’il en soit FindChangeByList est pratique pour les corrections-vérifications récurrentes mais ce n’est pas très souple.
MultiFindChange ou DoQUeryList me semblent plus adaptés à ton besoin.29 mars 2020 à 16:13 #67150MerlinMaître des clés1. La regex que tu utilises est bancale.
[A-Z] c’est exactement la même chose que u : lettre capitale quelconque
Donc [A-Z]u+ signifie : une lettre capitale quelconque, suivie d’une lettre capitale quelconque répétée une ou plusieurs fois.Ce qu’on peut aussi écrire : u{2,}
Soit une lettre capitale quelconque répétée deux ou plusieurs fois (la virgule est importante).2. J’ai testé ta regex, j’ai essayé avec une autre sans utiliser le remplacement avec les $ : avec le rechercher-remplacer ça fonctionne.
Par-contre c’est impressionnant comme rien ne fonctionne avec le script !
J’en perd mon latin :doute: :Euuuh: :doute: :Euuuh:
Et du coup je me demande aussi si les autres lignes fonctionnent…Je vais tester avec InDesign CS6 sur mon vieux Mac dès fois que ce serait un bug de InDesign CC2020, mais j’ai surtout l’impression de passer à côté de quelque chose.
:geek:29 mars 2020 à 17:36 #67151MerlinMaître des clésmais j’ai surtout l’impression de passer à côté de quelque chose.
Mais bon sang, mais c’est bien sur ! :extra:
Et je le savais… :mur:Pour les scripts (pas que celui-là), dans la recherche certains métacaractères requièrent un double-slash pour être échappés, donc il faut utiliser : \u
Ce qui nous donne cette ligne :grep {findWhat:”\s(?=\u{3,})“} {changeTo:”t”} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:false, wholeWord:false}
\s(?=\u{3,}) : cette regex ne capte QUE l’espace située immédiatement avant la suite de lettres capitales recherchées, grâce au LookBehind positif (en rouge*). Et j’ai mis 3 caractères minimum pour éviter de capter d’éventuels articles.
Donc on ne fait que remplacer l’espace par une TAB.
OK, au final ça ne change rien, mais sur le principe je préfère.
:Smiley03:31 mars 2020 à 11:37 #67152RonflexMembreOh grand magicien,
Je suis ébahi que tu ais pris du temps pour trouver la solution. D,autant plus que j’avais trouvé un plan b. Merci pour l’astuce du : u{2,} , cela m’a permis d’éliminer une formule encore plus étriquée qui prévoyait tous les cas dans les noms propres. Ex. St-Amour, Perrier-Lachapelle, Aubin/Lacoste. Je n’ai qu’a passer une fois une autre requête pour régler les problèmes comme D’Amours.
Cette formule t’aurait fait éclater de rire, j’en suis convaincu.Je te remercie sincèrement.
31 mars 2020 à 16:00 #67153MerlinMaître des clés:bonjour:
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.