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

Algorithmes et structures de données Discussion :

reconnaitre une regexp


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Par défaut reconnaitre une regexp
    Bonjour,

    J'aimerai savoir si il existe une expression régulière qui permet de reconnaître une expression régulière. Si oui laquelle. Si non, comment reconnaître une expression régulière.

    Merci d'avance de vos réponses

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    La seul que je vois c'est "*" car une expression régulière ca peut être n'importe quelle expression.
    Ca va de à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#(((https?|ftp)://(w{3}.)?)(?<!www)(w+-?)*.([a-z]{2,4}))#"
    en passant par ...
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    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
    "Les regexps" ça ne veut pas dire grand chose... Il faut préciser de quoi tu parles exactement, les expressions régulières des différents logiciels et présentations théoriques ne sont pas toutes identiques, loin s'en faut.

    Enfin la plupart des langages d'expressions régulières ne sont pas réguliers (ne peuvent donc pas être reconnus par une regexp), ne serait-ce que parce qu'ils contiennent des parenthèses équilibrés (typiquement non régulier, voir lemme de l'étoile).

    --
    Jedaï

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Par défaut
    je souhaiterai reconnaitre les expressions régulières utilisés par le logiciel flex avec le logiciel flex. Merci

  5. #5
    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
    Citation Envoyé par cdm1024 Voir le message
    je souhaiterai reconnaitre les expressions régulières utilisés par le logiciel flex avec le logiciel flex. Merci
    Ce n'est pas possible, flex est un simple lexer, et ne peut reconnaître que des langages réguliers. Il faut ajouter un parser comme yacc ou bison pour vérifier la validité d'une regex de flex.
    Enfin peut-être est-il possible de faire générer à flex un code C qui ferait la vérification, mais ça serait coton et vraiment pas adapté. Pourquoi veux-tu faire ça exactement, quel est ton véritable but ?

    --
    Jedaï

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Par défaut
    je veux écrire un front-end a flex bison pour générer des arbres à partir d'une grammaire simplifier écrite dans un style proche de celui de flex & bison.

    le programme prends en entrer un fichier grammaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    %%TOKEN
      indent [a-zA-Z]+[0-9a-zA-Z]*
      number [0-9]+
      plus  "+"
    %%GRAMAR
      root: Left(number) Node(plus) Right(number)
    ...
    et ensuite un ensemble de fichier grammaire et lexer pour flex et bison sont créer, on compile le tout et on obtient un parser plus simple à ecrire, à maintenir et à faire évoluer que flex et bison directement.

    (L'arbre ne sera pas forcément binaire), mais j'aimerai que ca soit assez générique pour que d'autre puisse l'utiliser et l'améliorer.

    voila je sais pas si j'ai été asser clair.

    NB: il est vrai que je n'ai pas une bonne mémoire et que je n'ai pas retenu mes cours sur les langages formels.

  7. #7
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par cdm1024 Voir le message
    Bonjour,

    J'aimerai savoir si il existe une expression régulière qui permet de reconnaître une expression régulière. Si oui laquelle. Si non, comment reconnaître une expression régulière.

    Merci d'avance de vos réponses
    Une expression régulière doit être bien parenthésée. J'espère que ça répond à ta question. Sinon, révise ton cours sur les langages rationnels, principalement le "lemme de l'étoile" :-)

  8. #8
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    qui s'appelle en anglais le diamond lemna!

  9. #9
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    qui s'appelle en anglais le diamond lemna!
    Je le connaissais sous le nom de "pumping lemma"

  10. #10
    Membre très actif

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Par défaut
    bonjour

    le prof nous avait introduit lex en disant

    regexp : /* rien */
    | STRING
    | regexp '*'
    | '(' regexp ')'
    | regexp regexp
    | regexp '|' regexp

    si je me rappelle bien il suffit de dire que la précédance de '*' est la plus forte

  11. #11
    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
    Tu confond avec yacc ou un autre parser, lex est un simple lexer.

    --
    Jedaï

Discussions similaires

  1. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24
  2. [C#][xml][regexp] Recherche d'une regexp dans un fichier xml
    Par LeJocker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/10/2005, 12h29
  3. [Regexp] Obtenir une regexp à partir du texte ?
    Par Alec6 dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 16h40
  4. [Regex] reconnaitre une chaîne non complète
    Par EdoBvD dans le forum Collection et Stream
    Réponses: 19
    Dernier message: 13/07/2004, 17h14
  5. Réponses: 6
    Dernier message: 26/03/2004, 16h31

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