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

RegExp: Récupérer une valeur en début de chaine


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut RegExp: Récupérer une valeur en début de chaine
    Bonjour,

    Dans une chaine de caracteres, je voudrais identifier si un nombre est présent et si tel est le cas créer deux variables : l'un contenant ce nombre l'autre contenant le reste (en enlevant l'espace entre le nombre et le reste). Les nombres autre qu'au début de la chaine doivent rester dans la variable contenant le reste.
    Je sais que c'est pas trop dur avec une RegExp mais c'est prise de tête, j'y arrive pas bien. Je vais continuer à essayer mais si vous avez le cerveau plus habitué à ses petits jeux de logique merci de m'aider un peu.

  2. #2
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    Pour être sûr de bien tout comprendre, peux-tu nous donner un exemple de chaine avec le nombre à chercher et le résultat que tu attends ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    $chaine = "4 rue paul claudel"
    resultat :
    $num = "4"
    $rue = "rue paul claudel"


    $chaine = "5 rue du 11 novembre"
    resultat :
    $num = "5"
    $rue = "rue du 11 novembre"

  4. #4
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    Citation Envoyé par pekka77
    $chaine = "4 rue paul claudel"
    resultat :
    $num = "4"
    $rue = "rue paul claudel"


    $chaine = "5 rue du 11 novembre"
    resultat :
    $num = "5"
    $rue = "rue du 11 novembre"

    je te propose ceci (c'est de la regexp on ne peut plus basique que tu aurait pu trouver dans la doc Perl (par exemple ici)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $chaine =~ /^(\d+)(.*)/;
    $num = $1;
    $rue = $2;

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    pourquoi ne pas utiliser la fonction substring-> substr()

    style :

    1) calculer la longueur de ta chaine de caractere
    2) tu substring chaque lettre et tu teste si c numeric ou pas (par exemple pour separer le numeric de ta string)

    ex :

    http://perlmeme.org/howtos/perlfunc/substr.html

    http://www.brunette.brucity.be/NewBr.../cgi/cgi9.html

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Merci.
    Je vais jeter à un coup d'oeil à ta doc. J'avais juste regarder la faq sur ce site mais elle n'est pas très complète apparemment.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par megapacman
    pourquoi ne pas utiliser la fonction substring-> substr()

    style :

    1) calculer la longueur de ta chaine de caractere
    2) tu substring chaque lettre et tu teste si c numeric ou pas (par exemple pour separer le numeric de ta string)

    ex :

    http://perlmeme.org/howtos/perlfunc/substr.html

    http://www.brunette.brucity.be/NewBr.../cgi/cgi9.html
    c'est plus simple avec une regexp qd meme. Et plus joli

  8. #8
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    Citation Envoyé par megapacman
    pourquoi ne pas utiliser la fonction substring-> substr()

    style :

    1) calculer la longueur de ta chaine de caractere
    2) tu substring chaque lettre et tu teste si c numeric ou pas (par exemple pour separer le numeric de ta string)

    ex :

    http://perlmeme.org/howtos/perlfunc/substr.html

    http://www.brunette.brucity.be/NewBr.../cgi/cgi9.html

    Ne le prends pas mal mais j'appelle cela se compliquer la vie !
    Ou du dév à la C ce qui revient au même...au moins en ce qui concerne la manipulation de chaines...

  9. #9
    Membre actif Avatar de etranger
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Points : 268
    Points
    268
    Par défaut
    je ne voi pas pourquoi faire compliqué (donc utiliser substr comme on le ferait avec un autre language) alors que l'on peu faire simple (avec la solution de Jeh).

    Les expressions reguliaires sont l'une des richesse de perl, il convient donc de les utiliser et de ne pas ecrire du code à la C/pascal alors que perl permet de faire les choses de maniere beaucoup plus simple.

    Je me permet de commanter l'expression reguliaire de Jeh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $chaine =~ # c'est la chaine contenu dans $chaine qui va etre scané
     
             / *debut de l'expression réguliaire
     
                  ^  *caractaire de debut de ligne (le nombre doit donc être le premiere caractaire, pas d'espace etc...)
     
                   (\d+)  # un decimal ou plus est sauveguardé dans $1.
     
                    (.*)   # le reste de la chaine est sauvegardé dans $2 (la chaine ne doit pas contenir de saut de ligne)
     
            /  # fin de l'expression.
    EDIT : Jeh à été plus rapide que moi

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

Discussions similaires

  1. récupérer une valeur avant de la modifier avec RegExp
    Par yodark dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/02/2011, 16h51
  2. [RegEx] Récupérer une valeur entre deux chaines
    Par thebarbarius dans le forum Langage
    Réponses: 7
    Dernier message: 04/04/2010, 16h47
  3. récupérer une valeur numérique dans une chaine
    Par EFFLYINGJOKER dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2010, 16h26
  4. récupérer une valeur dans une chaine
    Par Baldric de Dol dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2008, 17h37
  5. [RegEx] Récupérer une valeur à la suite d'une chaine
    Par Space Cowboy dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2006, 00h37

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