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 :

Selection sous chaîne


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Selection sous chaîne
    Bonjour,

    Essayant depuis 1h ou 2 d'atteindre mon resultat (sans succès), j'expose mon petit problème :
    j'ai $chaine1 = "DEVICE=eth0";
    mais je pourrais avoir DEVICE=eth1 ou DEVICE=lo par exemple.
    En utilisant les expressions regulière (ce qui me fait defaut) je souhaiterai stocker dans une variable ce qui est après DEVICE=
    J'ai essayé de defférente façon, mais je n'y arrive pas. Merci d'une aide supplémentaire.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    montre nous ce que tu as fait

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    désolé, je n'ai pas gardé trace de ce qui ne marche pas au bout d'un moment, ca fait un beau bloc de commentaire à virer

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Sache qu'on est pas là pour faire le boulot à ta place.
    C'est pour ça qu'on te demande de montrer ce que tu as déjà essayé de faire.

    de plus je ne vois pas en quoi c'est un bloc de commentaire vu qu'une regex s'écrit en une ligne

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Si un bloc vu que j'ai tenté plusieurs méthodes pour parvenir à mon besoin:

    J'ai essayé de passer une commande en faisant
    $var = open(CMD,"|cut -d = -f 2 -s $mon_fichier")
    Mais ca ne marche pas.

    J'ai essayé d'ouvrir mon fichier, le lire en stockant les lignes dans un tableau... sans savoir quoi en faire apres...
    open( RAC1, "$mon_fichier") or die("open: $!");
    my @contenu_fichier = <RAC1>;
    Là, j'arrive à $contenu_fichier[0] = "DEVICE=eth1" donc apres sur ca, je voudrais appliquer une expression reguliere sur ma variable $contenu_fichier[0]

    J'avais donc essayé :
    $a = ( $contenu_fichier[0] =~ m/^[DEVICE=]/ );

    Mais $a = 1

  6. #6
    Membre éprouvé Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Par défaut
    Il faut lire la doc des expressions rationnelles (regular c'est en anglais)...

    Ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a = ( $contenu_fichier[0] =~ m/^[DEVICE=]/ );
    ne fait pas du tout ce que tu veux :
    • Tu cherches si la chaîne commence par un des caractères D,E,V,I,C,E ou = et non pas par la chaîne "DEVICE=" !
    • Tu mets dans $a l'indicateur qui dit si ta chaîne correspond à ton expression (le 1 signifie oui) et non pas ce qu'il a trouvé !


    Ce que tu veux, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($contenu_fichier[0] =~ /DEVICE=(\w+)/) {
      $a = $1;
    }
    Ce qui se lit : si la chaîne $contenu_fichier[0] contient "DEVICE=" plus des caractères d'un mot, alors $a vaut le groupe 1 de la recherche, c'est à dire la partie qui correspond aux parenthèses...

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

Discussions similaires

  1. Problème avec select sous MYSQL
    Par Thomad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/01/2006, 11h26
  2. problem avec un select sous IE?
    Par Death83 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/12/2005, 14h36
  3. Réponses: 28
    Dernier message: 22/09/2005, 11h57
  4. [select() sous cygwin] ouvre / ferme des ports en boucle
    Par Pulsar33 dans le forum Développement
    Réponses: 1
    Dernier message: 05/04/2005, 01h06
  5. [String] Récupérer une sous -chaîne sans split
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 19/07/2004, 14h45

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