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 :

Séparer un champ en deux


Sujet :

Langage Perl

  1. #1
    Membre averti
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Points : 335
    Points
    335
    Par défaut Séparer un champ en deux
    Bonjour,

    j'ai un ptit problème au niveau d'une expression régulière que j'arrive pas à la bien determiner, j'essaie de séparer deux valeurs qui se trouvent dans un seul champs, je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $test="fsdfsdf 024541123";
     $test=~/(\w.*\s)+(\d.*)/;
     print " $1 ; $2";
    C'est bon si les deux valeurs $1 et $2 ne sont pas vides, mais ça me genere erreur si un de ces deux valeurs est vide.

    ++

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     use strict;
     use warnings;
     
     my $test="fsdfsdf 024541123";
     
     if($test=~/(\w.*\s)+(\d.*)/){
    	print " $1 ; $2";
     }
     else{
    	print "ne s'apparie pas";
     }
    Le message d'erreur est normal car tu dis au programme qu'il doit trouver deux valeurs contenant des caractères. Rajoute un test if.

    Tu peux également les récupérer en deux fois si il existe des cas où seule une des deux valeurs est présente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     use strict;
     use warnings;
     
     my $test="fsdfsdf 024541123";
     
     if($test=~/^(\w.*\s)+/){
    	print " $1\n";
     }
    if($test=~/\s(\d+.*)$/){
    	print " $1\n";
     }

  3. #3
    Membre averti
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Points : 335
    Points
    335
    Par défaut
    Salut Jasmine

    Je n'ai pas fais attention au debut, que le champs que j'essaie de séparer contient des valeurs du genre pas d'espace entre des lettres et des chiffres, ex : "jskjqkjsk jksjqkj357421524", donc j'ai enlevé espace du motif, mais c'est pire, ça ne sépare pas les lettres des chiifres, j'ai testé à la place du \w le \D, pour eviter les chiffres, mais ça sépare toujours pas

    Merci

    ++

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Que dois-tu exactement récupérer de la chaîne
    jskjqkjsk jksjqkj357421524



    jskjqkjsk
    => [a-z]+
    que des lettres minuscules

    jksjqkj357421524
    => \w+
    des lettres, chiffres ou underscore

    jskjqkjsk jksjqkj
    => [a-z\s]+
    lettres minuscules et espaces


    Tu peux placer des caractères entre tes couples de parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =~ /([a-z]+)/s+(\w+)/
    $1 = jskjqkjsk
    $2 = jksjqkj357421524

  5. #5
    Membre averti
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Points : 335
    Points
    335
    Par défaut
    Il s'agit d'un champ qui contient soit des caractères minuscules ou majuscules et des chiffres à coté et que l'espace entre les caractères et les chiffres peut soit exister soit non, avec ça c'est bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          use strict;
          use warnings;
     
          my $test="jkjjjdjAAAqsd jdskqj 031545454";  #  my $test="jkjjjdjAAAqsd jdskqj031545454"  donne la même chose 
          $test=~/([a-zA-Z\s]*)(\d*)/;
          print $1.";".$2;

    Merci Jasmine

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Une petite astuce afin de rendre une recherche insensible à la casse : i

    cette expression reconnaitra les lettres qu'elles soient en minuscules ou en majuscule

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

Discussions similaires

  1. Lier deux champs dans deux tables ?
    Par Olivierc dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 23h13
  2. [MySQL] Probleme de liaison de champs entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 16/12/2005, 16h34
  3. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53
  5. [sql] afficher deux champs de deux tables sans jointure
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2005, 12h38

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