IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de regex


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Pérou

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 25
    Par défaut Problème de regex
    Bonjour,
    J'ai un problème d'expression régulière, et je ne suis pas un spécialiste, loin de là de ce genre de choses.
    Il s'agit de récupérer le numéro de ligne indiqué dans un message d'erreur issu d'un assembleur AVR (Gavrasm) pour qu'elle soit reconnue par Geany et me permettre d'aller à la ligne défectueuse de mon code assembleur en cliquant dessus.
    Les messages d'erreur générés par l'assembleur sont mis en forme comme ci dessous:

    [adc8dev.asm,42]: "rjm main" > Error 070: Unknown instruction or macro!

    Il s'agit d'isoler (ou de faire un "full-match") sur la valeur (ici 42 mais ça peut être n'importe quel autre nombre) délimité par "," et "]" (une virgule et une croche fermante).
    Ce que je voudrais pouvoir faire est d'insérer cette expression régulière dans le dialogue de construction de Geany (regex_error=) afin de permettre le saut à la ligne provoquant cette erreur en cliquant sur le message indiquant la ligne défectueuse.

    J'ai essayé plein d'expressions régulières sur des sites web, mais le résultat me laisse ",42" ou "42]" selon les formules essayées, mais jamais le "42" tout seul n'est full-matché.

    Voici une expression que j'ai essayée, qui me laisse "42]" au lieu du "42" attendu:
    ([0-9]+)[^\(0-9)+:(0-9)+.(a-z)+.] laisse "42]".

    Geany est très documenté, mais pas ou pas suffisamment sur ce point.

    Je ne comprend rien a ces expressions régulières, et ce que j'en essaie est frustrant (je préfère le codage en "dur", le scripting n'est pas pour moi). Par contre, je peux changer le format du message d'erreur pour que ce soit plus facile à interpréter, comme:
    [adc8dev.asm,(42)]: "rjm main" > Error 070: Unknown instruction or macro!

    Je vous remercie d'avance si vous pouviez m'aider, j'ai passé beaucoup de temps là dessus sans comprendre quoi que ce soit.

    Cordialement
    JF (Kuki el Gato)

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 994
    Par défaut
    Si je ne me trompe pas, Geany utilise GLib qui lui même utilise PCRE, donc si tel est bien le cas, tu peux avoir recours au lookahead (test avant) pour vérifier que le caractère suivant est bien un ]. Donc:

  3. #3
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Pérou

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 25
    Par défaut @CosmoKnacki
    Je vous remercie, j'ai testé votre expression sur regex101.com et elle me sélectionne bien le numéro de la ligne.
    Mais Geany doit avoir un problème, parce qu'il ne va pas chercher le numero de ligne dans le souce. je lui ai inséré l'expression sous plusieurs formes (/regexp/g) ou (/regexp/gm) et geany ne fait pas son boulot (à ce niveau du moins). Dommage parce qu'en C ou en Pascal, il suffit de cliquer sur le message et il va tout de suite sur la ligne pointée.

    Je vais essayer de trouver sur un forum Geany pour ce point (ce n'est pas votre expression qui est en défaut, elle identifie fort bien le numéro de ligne.
    Encore merci!

  4. #4
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Pérou

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 25
    Par défaut @CosmoKnacki: les regex de Geany...
    Bonjour et excusez mon retard à vous répondre.
    J'ai contourné le problème en modifiant le format de ligne de sortie des messages de l'assembleur gavrasm afin qu'ils apparaissent comme ceux de NASM, qui est connu d'origine de l'éditeur de textes. et là ça fonctionne très bien. En fait on "bluffe" Geany qui a un problème semble t'il avec les regex d'erreurs, et aucune doc sérieuse pour en parler. Il suffit aussi de remplacer dans le fichier "filetypes.asm" (en le copiant au préalable dans ls dossier de config de Geany /home/username/.config/geany/filedefs) les mots clés, registres et directives de NASM par ceux de l'assembleur AVR pour obtenir la coloration syntaxique.
    Encore merci pour votre aide sympathique.
    Kuki el Gato

Discussions similaires

  1. [Java] Problème de Regex
    Par spk4ever dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2006, 11h51
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 15h50
  3. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 16h32
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 16h48
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo