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 :

Ensemble de Vecteurs à récupérer par une Regex [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Points : 88
    Points
    88
    Par défaut Ensemble de Vecteurs à récupérer par une Regex
    Salut tout le monde,
    Je travaille sur un projet en java, et j'ai besoin d'envoyer des données sous forme d'un String, et par suite le parser pour récuperer les données envoyée.
    voici un exemple de chaine envoyée :

    [8,86,73];[];[36,87,34];[]

    chaque [blabla] représente un vecteur d'objets, et chaque objet est défini à l'aide d'un entier.
    Les entiers sont séparées par "," et les vecteurs sont séparés par ";"
    Pourrai-je trouver une Expression Régulière qui me permet de récupérer les numéros des vecteurs?

    Merci d'avance.
    j'espère que ma formulation était claire :s

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    un numéro de vecteur, c'est quoi ?
    Est-ce son numéro de position dans la liste des vecteurs ou bien voulais-tu plutôt parler de ses coordonnées (les entiers séparés par un espace) ?

  3. #3
    Membre régulier Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Points : 88
    Points
    88
    Par défaut
    Non, non, les numéros représentent des objets, des instances d'une meme classe. disons que cette classe s'appelle "MyObject", et supposons que j'ai une méthode statique qui construit un objet a partir de ce numero :

    public static MyObject getObject(int index) ;

    donc, si j'envoie cette chaine de charactères :

    [8,86,73];[];[36,87,34]

    je veux avoir comme résultat deux vecteurs chacun comprend trois instances de MyObject. (on compte pas un array vide [] )

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Un truc comme ça te mettra sur la piste je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
     
    class MyObject {
        public function __construct($index) {
            $this->value = $index;
        }
    }
     
    class Vecteur {
        public $_objects = array();
     
        public function addObject(MyObject $obj) {
            $this->_objects[] = $obj;
        }
    }
     
     
    $str = '[8,86,73];[];[36,87,34]';
     
    $myVecteurs = array();
     
    foreach( explode(';', $str) as $unVecteur) {
        if (preg_match('/\[(\d+),(\d+),(\d+)\]/', $unVecteur, $match)) {
            $v = new Vecteur();
            array_shift($match);
            foreach($match as $int) {
                $obj = new MyObject($int);
                $v->addObject($obj);
            }
            $myVecteurs[] = $v;
        }
    }
     
    print_r($myVecteurs);

  5. #5
    Membre régulier Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Points : 88
    Points
    88
    Par défaut
    oui merci s.n.a.f.u
    quoique avoir 3 éléments c'est pas une règle, il peu avoir plusieurs, c'est a dire
    je peu avoir la chaine suivante :

    [1,23][20,32,67,2][][12]

    si je mets : '(\d)+' ça marche?

    Si vous préferiez le java, ce serai génial, sinon pas grave, j'ai pu comprendre le code php

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Pour ma part, c'est le contraire : je sais lire le java, mais je suis un peu à la traîne pour l'écrire. Et puis tu es venu dans un forum php !

    Adaptation pour vecteur à géométrie variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
     
    class MyObject {
        public function __construct($index) {
            $this->value = $index;
        }
    }
     
    class Vecteur {
        public $_objects = array();
     
        public function addObject(MyObject $obj) {
            $this->_objects[] = $obj;
        }
    }
     
     
    $str = '[8,86,73];[];[36,87,56,34]';
     
    $myVecteurs = array();
     
    foreach( explode(';', $str) as $unVecteur) {
        if (preg_match_all('/\d+/', $unVecteur, $matches)) {
            $v = new Vecteur();
            foreach( $matches[0] as $int) {
                $obj = new MyObject($int);
                $v->addObject($obj);
            }
            $myVecteurs[] = $v;
        }
    }
     
    print_r($myVecteurs);
    Les grosses adaptations en java seront de changer les fonctions preg en leur équivalent objet Regex, ainsi que transcrire la fonction explode dont je ne connais pas l'équivalent en java.

  7. #7
    Membre régulier Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Points : 88
    Points
    88
    Par défaut
    J'ai cherché un forum pour Regex mais je me suis pas rendu compte qu'il fait partie du forum PHP :p

    Merci pour votre aide, oui je peux reformuler en java, y aura pas de problèmes, heureusement les RegeX sont indépendants du langage.
    pour ce qui est de explode, normalement c'est l'équivalent de "split" en java.

    Merci une autre fois.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/11/2011, 01h55
  2. Eviter le blocage du navigateur par une regex
    Par renkev dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 19/08/2011, 18h14
  3. récupérer le contenu détecter par une regex
    Par manu f dans le forum Général Java
    Réponses: 3
    Dernier message: 07/04/2010, 11h55
  4. [RegEx] spliter par rapport a une regex en récuperant la regex
    Par Khrysby dans le forum Langage
    Réponses: 1
    Dernier message: 10/11/2005, 15h08
  5. Réponses: 2
    Dernier message: 16/10/2003, 17h17

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