Forums Développement Multimédia

Aller au contenu

- - - - -

[Résolu]Code Grep pour guillemets

PAO

10 réponses à ce sujet

#1 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 21 March 2014 - 10:27 AM

Bonjour,

je souhaite rechercher mon texte entre guillemets pour lui affecter un style de caractère particulier, et j'utilise la fonction grep suivante :

( ?<= « ).+ ?( ?= »)

Mais il ne me trouve rien... Y-a-t'il une erreur dans ma fonction ?

JC+

#2 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 21 March 2014 - 11:44 AM

Bonjour JC+


Des erreurs, il y en a plusieurs.

Pour le GREP chaque caractère est important :
- si tu mets des espaces, ils ont un sens et modifient la mécanique de la recherche.
J'ai remplacé les espaces par des puces dans ta formule pour les visualiser et en parler :

(?<=«).+?(?=»)

Les puces rouges modifient carrément la structure interne de la recherche.
Pour le premier tu n'as plus un lookbehind mais un truc dont je n'ai même pas cherché le sens…
Le second et le point d'intérrogation qui suit, je ne vois pas le sens que ça peut prendre…
Le troisième annule l'effet du lookahead, idem, je ne sais pas ce qu'il fait du coup.

Quant aux puces bleues, pour toi ce sont des espaces, ou bien tu les as mis là au hasard ? J'avoue ne pas trop savoir… Si tu veux rechercher des guillemets entourés d'espaces, tu dois utiliser les raccourcis correspondants. Je ne conseille pas d'utiliser le caractère espace dans un GREP (même pas avec la méthode d'échappement dont je parle juste après). Pour une espace quelconque le raccourcis est \s . Il y a des types d'espaces différents, tu trouveras la liste dans les sous menu du champ GREP.

Pour les guillemets ouvrants ou fermant, c'est pareil, tu ne peux pas les utiliser comme ça car ils ont un sens GREP. Mais tu as 2 solutions :
- soit tu utilises les raccourcis correspondants qui sont dans l'ordre ~{ et ~}
- soit tu "échappes" le caractère, c'est à dire que tu places avant un antislash \ qui va prévenir le moteur grep de ne pas rechercher un sens particulier au caractère qui le suit. Dans l'ordre : et

Après, si les explications ne suffisent pas, voici un début de formule que tu peux enrichir comme tu veux.

(?<=~{).*(?=~})


[EDIT]
PS : j'ai retrouvé le sens du ?
Il permet de rechercher uniquement jusqu'au premier guillemet suivant. A utiliser évidemment sans l'espace.
Ça me permet de poser un autre truc.
Je préfère utiliser le caractère * de préférence au + justement parce que l'enchainement +? à également un sens GREP et ça peut porter à confusion entre (.)(+?) et (.+)(?)
Les parenthèses ne sont là que pour mettre en valeur les 2 découpages différents du sens.
Pour info, la différence entre les 2 :
.+ recherche des caractères quelconques une ou plusieurs fois
.* recherche des caractères quelconques zéro ou plusieurs fois

#3 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 21 March 2014 - 15:14 PM

Bonjour,

Merci pour ta réponse très complète.

J'ai essayé ta formule,

Voir le messagedldler, le 21 March 2014 - 11:44 AM, dit :

(?<=~{).*(?=~})

Dans tout mon document, elle ne me trouve qu'un ensemble guillemets + mot, alors que j'en ai plusieurs. Bug dans mon document ?

JC+

#4 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 21 March 2014 - 15:31 PM

C'est ça le rôle du ? que j'avais raté.
(?<=~{).*?(?=~})

Sinon, c'est que le style auquel tu as associé le GREP n'est pas appliqué à tout ton texte.

#5 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 21 March 2014 - 15:37 PM

Je fais juste une recherche via le GREP sans aucun style de texte, et il ne m'en trouve qu'un seul. En plus, quand je lance la recherche, il mouline un bon moment avant d'en trouver un :?

[Edit] Avec ta nouvelle formule, il m'en trouve 2, mais toujours pas le premier de la liste.

Autre question, comment faire pour inclure les guillemets dans le résultat de la recherche ?

#6 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 21 March 2014 - 16:25 PM

Citation

Autre question, comment faire pour inclure les guillemets dans le résultat de la recherche ?
Ne pas les inclure dans le lockbehind et le lockahead… ? Je suis OK pour donner des conseils afin de maitriser le GREP (et je reconnais que ce n'est pas facile) mais pas pour distribuer des formules à la demande…


Pour le reste, je ne sais pas. Je ne m'en sert jamais en recherche. Sans doute parce que tes guillemets courrent sur plusieurs paragraphes et que les GREPS ne fonctionnent qu'à l'intérieur d'un paragraphe.

#7 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 21 March 2014 - 17:59 PM

Voir le messagedldler, le 21 March 2014 - 16:25 PM, dit :

Je suis OK pour donner des conseils afin de maitriser le GREP (et je reconnais que ce n'est pas facile) mais pas pour distribuer des formules à la demande

C'est tout à fait honorable, mais alors que \«.+\» fonctionne, votre proposition ~{.+~} fait planter Indesign à la seconde recherche, et je voulais juste savoir si ça venait de ma formule, ou de l'utilisation des ~{

Mais tout ça n'est pas bien grave.

En tout cas merci pour votre aide.

JC+

#8 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 21 March 2014 - 18:40 PM

Rechercher mot entre parenthèses exclues : (?<=\().+?(?=\))

Rechercher mot entre parenthèses inclues : \((?<=\().+?(?=\))\)

Et comme à chaque fois que je publie une de ses formules magiques je ne manque pas de mettre un lien vers la bible GREP de L. Tournier dont je ne saurais plus me passer (la bible, pas Laurent) : http://goo.gl/NY3R0u

:cool:
Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#9 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 21 March 2014 - 19:01 PM

Merci pour ta participation... Mais mon problème concerne les guillemets, et leur indication dans le Grep : \« Ok mais ~{ fait planter ID à la seconde requête.

Donc c'est : \«((?<=\«).+?(?=\»))\» ou \{((?<=~{).+?(?=~}))\} ?

Car ça marche avec la première, mais l'autre ne trouve aucune correspondance dans mon document.

JC+

#10 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1864 messages

Posté 21 March 2014 - 21:47 PM

Le problème avec les guillemets c'est que nous autres francophones sommes un cas particulier avec nos chevrons et nos espaces insécables.
Mais si tu remplaces parenthèse par guillemet-français, est-ce que ça fonctionne ?

(A priori ça devrait…???)
:eusa_doh:
Acrobate du PDF, InDesigner et Photoshopographe
abracadabraPDF.net

#11 JC+

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 174 messages

Posté 22 March 2014 - 09:41 AM

ça \«((?<=\«).+?(?=\»))\» oui ça fonctionne.

JC+




Répondre à ce sujet



  

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

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

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP