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 :

Perl + expression régulière


Sujet :

Langage Perl

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 29
    Par défaut Perl + expression régulière
    Bonjour à tous,

    Comme je débute en perl, je trouve toujours des difficultés dans les regex,

    j'ai un fichier contenant plusieurs lignes dont je veux extraire seulement les lignes sous cette forme;

    deb: Mot1: phrase.
    deb: Mot2: phrase.
    ...

    j'ai fait l'expression suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    next unless (/^\s*(deb):\s*(.*?)([^\s:]*):\s*([^.]*\.)$/);
    en fait le problème dans cette expression est qu'elle me renvoie aussi des lignes de forme: deb: mot1 mot 2: phrase. (càd 1 ou plusieurs mots après le premier : alors que je ne veux qu'un seul mot après le premier

    comment je peux modifier cette expression SVP ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    essaie de remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    next unless (/^\s*(deb):\s*(.*?)([^\s:]*):\s*([^.]*\.)$/);
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    next unless (/^\s*(deb):\s*(\S+):\s*([^.]*\.)$/);

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 29
    Par défaut
    Bonsoir,
    J'ai remplacé mais la sortie est vide !!

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Hum, tu n'expliques pas bien ce que tu veux faire. Tu veux rejeter les lignes où il y a deux mots, ou tu ne veux garder que le premier mot quand il y en a plusieurs?

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 29
    Par défaut
    je veux garder les lignes commençant par le mot deb puis deux points ( puis espace puis un seul mot suivi de deux points puis un ensemble des mots et un point à la fin.

  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Donc, je n'avais probablement pas bien compris ton besoin, mais je ne suis toujours pas sûr de bien comprendre.

    Si, dans ta liste de lignes, tu as:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     deb: mot1 mot 2: phrase.
    tu veux l'éliminer, ou tu veux garder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     deb: mot1: phrase.
    uniquement (et donc éliminer seulement les mots supplémentaires?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 29
    Par défaut
    si j'ai des lignes comme
    deb: mot1 mot 2: phrase.

    je veux les éliminer et ne garder que des lignes de la forme
    deb: mot: phrase.

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Dans ce cas, j'avais bien compris au départ et je ne vois pas pourquoi mon expression régulière ne marche pas chez toi alors qu'elle marche chez moi comme le montre ce script uniligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ perl -e 'for my $str ("deb: Mot1: phrase.", "deb: Mot2: phrase.", "deb: Mot1 Mot2: phrase") { 
                   print "$str\n" if $str =~ /^\s*(deb):\s*(.*?)([^\s:]*):\s*([^.]*\.)$/;
               }
              '
    deb: Mot1: phrase.
    deb: Mot2: phrase.
    Montre peut-être plus de lignes de ton script, pour qu'on comprenne le contexte.

Discussions similaires

  1. [PERL] Expressions régulières
    Par Ashin dans le forum Langage
    Réponses: 9
    Dernier message: 16/03/2010, 17h46
  2. PERL: expression régulière
    Par Ashin dans le forum Linux
    Réponses: 2
    Dernier message: 19/01/2010, 16h47
  3. [Perl]Expression régulière .
    Par Premium dans le forum Langage
    Réponses: 1
    Dernier message: 06/07/2009, 16h43
  4. [Noob] Formation rapide à Perl - Expressions régulières
    Par Konrad Florczak dans le forum Langage
    Réponses: 16
    Dernier message: 25/09/2006, 15h48
  5. Expression Régulière PERL
    Par slyv dans le forum Langage
    Réponses: 8
    Dernier message: 25/10/2005, 21h30

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