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

Linux Discussion :

AWK et Expression réguliere


Sujet :

Linux

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 45
    Points
    45
    Par défaut AWK et Expression réguliere
    Bonjour,

    Je dois vérifier qu'une chaine de caractères contienne le caractère * suivi d'un / et suivi d'un nombre.
    Par exemple : */28

    Ma condition avec mon expression régulière ressemble à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( value ~ /^\*\/[0-9]+$/ )
    Avec * et / banalisé comme vous pouvez le voir.

    Cependant mon terminal me renvoie un joli ^ syntax error

    Je pense avoir bien compris le principe des expressions régulières, notamment sous AWK, je ne vois donc pas mon erreur.

    Je remercie d'avance ...

    Spirit

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    ~ n'existe pas en awk (d'ailleurs ça n'existe en rien si je ne m'abuse). En awk tu peux utiliser la fonction gsub() pour faire ça.

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Si si, ça fonctionne, j'ai une liste de conditions sous expression régulière. Seulement celle-ci ne fonctionne pas.
    Et gsub() remplace une les occurrences, donc rien a voir.

    voir ici

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Oui désolé, je sais pas pourquoi je suis parti sur une substitution

    Ton expression est valide syntaxiquement. Tu dois avoir une merde avant ou après, il faudrait que tu montre ce que tu as autour.

    Par contre ta regexp ne fait pas ce que tu dis vouloir faire. Elle vérifie que la chaine est exactement */ suivi d'un nombre, pas qu'elle contient */ suivi d'un nombre (à cause des ^ et $).

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Tu as raison, je me suis mal exprimé dans mon premier post, je doit vérifier si la chaine */nb correspond intégralement à mon expression régulière.

    Voila l'erreur exacte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    awk: cmd. ligne:122: 		else if( value ~ /^\*\/[0-9]+$/ ) {
    awk: cmd. ligne:122: 		^ syntax error
    Ligne 122 correspondant à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    else if( value ~ /^\*\/[0-9]+$/ )
    Je suis sure à 99% que ce qui suit et précède ne fournis pas d'erreur ...

    Merci pour votre aide.

Discussions similaires

  1. [Debutant] Expression réguliere
    Par grizzz dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 17/08/2007, 16h14
  2. expression réguliere
    Par htristra dans le forum C
    Réponses: 11
    Dernier message: 06/09/2005, 22h33
  3. expression réguliere en c++
    Par alambics dans le forum MFC
    Réponses: 9
    Dernier message: 10/03/2004, 20h19
  4. expression réguliere
    Par alambics dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2004, 13h52

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