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 Delphi Discussion :

TRegex groupes avec utilisation de références


Sujet :

Langage Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut TRegex groupes avec utilisation de références
    Bonjour

    Je galère un peu avec une regex. J'ai besoin de découper le bloc suivant:
    <P-0>90.9894332885742</P-0><P-1>91.0348663330078</P-1><P-2>91.0837326049805</P-2><P-3>91.1699676513672</P-3><P-4>91.2222290039063</P-4><P-5>91.394157409668</P-5><P-6>91.6132125854492</P-6><P-7>91.8376388549805</P-7><P-8>91.9418411254883</P-8><P-9>92.1143188476563</P-9><P-10>92.2482147216797</P-10><P-11>92.460319519043</P-11><P-12>92.629150390625</P-12><P-13>92.8416442871094</P-13><P-14>93.0567321777344</P-14><P-15>93.3616027832031</P-15><P-16>93.6337814331055</P-16><P-17>93.9675750732422</P-17><P-18>94.3830261230469</P-18><P-19>94.9742279052734</P-19><P-20>95.5255889892578</P-20><P-21>96.1618118286133</P-21><P-22>96.7336196899414</P-22><P-23>97.3076324462891</P-23><P-24>97.8607864379883</P-24><P-25>98.3832473754883</P-25><P-26>98.9817047119141</P-26><P-27>99.5498504638672</P-27>

    Ma regex (avec des codes hexa) ressemble pour l'instant à ça:

    \x3CP-\d+\x3E(.*)\x3C\x2FP-\d+\x3E

    Problème: elle me renvoie un seul groupe qui représente ce qui est compris entre <P-0> et </P-27>

    Il me semble qu'il y a un moyen de rappeler la valeur trouvée à un moment plus loin dans la regex.
    Un truc du genre

    <P-0>90.9894332885742</P-0> == J'ai trouvé 0 dans P-, je le reporte dans /P-

    Me goure-je en pensant que c'est possible ????

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Trouvé grâce à un outil pas mal : Expresso

    \x3CP-(?<M>\d{1,3})\x3E(.*)\x3C/P-\k<M>\x3E

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 507
    Points
    15 507
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    C'est intéressant. Pour ma part, je ne connaissais pas cette syntaxe.

    Mais il me semble qu'il y avait une solution plus simple, à savoir remplacer '.*' par quelque chose de plus précis, comme '\d+\.\d+'. Ou encore utiliser le mode non gourmand : '.*?'.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    En fait, la valeur entre chaque balise peut aussi être une valeur entière ou même une valeur décimale avec un séparateur décimal différent.
    Avec .* je peux traiter chaque cas en aval.
    Sinon, oui, c'était une solution plus "parlante" au vu des valeurs de l'exemple présenté ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête avec Group By utilisation clause where
    Par gcvoiron dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/03/2011, 19h32
  2. problème de requête avec utilisation de min/group by
    Par htristra dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 02/10/2007, 13h16
  3. Pb avec utilisation UPDATEsous VBA
    Par frevale dans le forum Access
    Réponses: 7
    Dernier message: 07/11/2005, 23h56
  4. TForm dans une DLL avec utilisation d'Interface
    Par guedelmalin dans le forum Langage
    Réponses: 13
    Dernier message: 17/06/2005, 11h58
  5. prob avec utilisation de package
    Par martijan dans le forum Modules
    Réponses: 13
    Dernier message: 11/07/2003, 09h37

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