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

Administration système Discussion :

[Expressions régulières] le caractère spécial "?"


Sujet :

Administration système

  1. #1
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Points : 1 525
    Points
    1 525
    Par défaut [Expressions régulières] le caractère spécial "?"
    Je faisais des petits tests d'expression régulières ce matin et j'avoue que je ne m'explique pas une chose.
    Le caractère ? signifie 0 ou 1 occurrence de l'expression recherchée.

    Par exemple
    correspond à 0 ou 1 caractère "a" dans la chaîne de caractère.

    Donc à priori
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ echo "abc" | sed -n '/a?bc/p'
    devrait me reconnaître et me réécrire ma chaîne "abc" sur le terminal (car je rentre bien dans la condition 0 ou 1 a puisqu'il y en a un dans la chaîne de caractères)
    Mais ce n'est pas le cas.

    par contre ça ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ echo "abc" | sed -n  '/a*bc/p'
    abc
    Comprends plus ?
    Où est l'erreur dans ma réflexion ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    Sous cygwin (j'ai que ca au boulot) cela passe de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ echo "abc" | sed '/a?bc/p'

    J'ai juste supprimer le -n

  3. #3
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour CedrX,
    alors,il faut que tu mettes un antislash avant le ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "abc" | sed -n '/a\?bc/p'
    abc
    en effet, sed utilise le type regexp BRE ( Basic Regular Expression )
    y'a plusieurs de types de regexp, BRE, PCRE ...
    t'aurais pu faire comme ceci aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "abc" | sed -n '/a\{0,1\}bc/p'
    abc
    avec le style BRE, tu echappes "?" .. car c'est considéré comme caractère normal
    Cordialement

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Salut,

    Sous cygwin (j'ai que ca au boulot) cela passe de cette façon :
    Code :
    $ echo "abc" | sed '/a?bc/p'
    Code résultat :
    abc

    J'ai juste supprimer le -n
    attention wintt, ce n'est pas parce que tu a obtenu le résultat que attendu que ta commande était juste, en effet la preuve est là !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "abcd" | sed '/a\{3,4\}bcee$/p'
    abcd
    le fait d'enlever l'option -n laisse afficher la chaine à traiter
    donc ce n'est pas du tout la réponse !
    dans le manpage de sed, tu peux voir !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -n, --quiet, --silent
                  suppress automatic printing of pattern space
    la commande p ne permet d'afficher que les motifs qui correspondent dans la chaine à traiter
    Je suis peut être un peu confus dans mon explication, mais bon ... fallait signaler l'erreur
    En résumé: l'option -n ( ne pas afficher la chaine à traiter )
    la commande p ( n'afficher que les motifs regex qui correspondent dans la chaine à traiter)
    Cordialement,

  5. #5
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Points : 1 525
    Points
    1 525
    Par défaut
    Merci beaucoup à vous deux

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

Discussions similaires

  1. [Python 2.X] Expression régulière trouver quelque chose entre quotes
    Par Northis dans le forum Général Python
    Réponses: 1
    Dernier message: 05/11/2014, 13h59
  2. Réponses: 2
    Dernier message: 05/05/2011, 10h37
  3. Expression régulière, supprimer caractères non numérique
    Par Scinza38 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/11/2009, 11h19
  4. Expressions régulières et caractères accentués
    Par fhebert dans le forum Général Python
    Réponses: 3
    Dernier message: 13/06/2009, 14h00
  5. expression régulière et caractères spéciaux
    Par Jasmine80 dans le forum Langage
    Réponses: 6
    Dernier message: 13/03/2008, 12h23

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