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] pb sur split


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut [RegExp] pb sur split
    bonjour,

    j'aurai voulu comprendre pourquoi quand j'ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    my $machaine = "<COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539">";
    my @montableau = split(/(<.*?>)/, $machaine);
    j'obtiens une alternance de valeurs vides et de <COORD..> dans mon tableau ?

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Utilise les simples quotes pour définir ta chaîne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    use strict;
     
    my $machaine = '<COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539"><COORD xhg="1002" yhg="470" xbd="1544" ybd="539">';
    my @montableau = split(/(<.*?>)/, $machaine);
     
    print map{$_."\n"} @montableau;
    A l'écran
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">

    Jasmine,

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    J'ai tjs une alternance de chaine vide et de <COORD...>

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Oui, c'est normal : split /regexp/ découpe une chaîne selon la regexp donnée et renvoie la liste des sous-chaînes entre les occurences de la regexp.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    split m/:/, 'hello:world:goodbye';
    renvoie ('hello', 'world', 'goodbye').

    Cependant, si il y a "capture" (des parenthèses) dans la regexp, les chaînes capturées sont rajoutées dans la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    split m/(:)/, 'hello:world:goodbye';
    renvoie ('hello', ':', 'world', ':', 'goodbye').

    C'est ce qui se passe dans ton cas, il n'y a rien entre les regexps d'où les chaînes vides, et ta regexp capture les balises.

    En fait tu ne devrait pas utiliser split dans ton cas, une simple regexp suffira :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my $machaine = <<'END_OF_HTML';
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    <COORD xhg="1002" yhg="470" xbd="1544" ybd="539">
    END_OF_HTML
     
    my @montableau = ($machaine =~  m/(<[^>]+>)/g);
    --
    Jedaï

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    mon erreur est que je ne considérais pas la regexp comme un séparateur.
    Merci bien

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

Discussions similaires

  1. regexp match sur chaine de caractere
    Par menzeli dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2010, 13h04
  2. [regexp] Condition sur un string
    Par Benladouche dans le forum MATLAB
    Réponses: 7
    Dernier message: 15/07/2009, 10h26
  3. Problème sur split avec regex
    Par fr1man dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/05/2009, 13h46
  4. [RegExp] Pb sur une ereg d'url
    Par ePoX dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2006, 22h11
  5. Regexp ok sur IE pas sur Firefox
    Par zebuman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/06/2005, 13h17

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