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

Langages de programmation Discussion :

A propos des expressions régulières


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut A propos des expressions régulières
    Bonjour,

    j'aimerais savoir s'il existe un standard concernant les Regex ou si, le fait qu'elles soient semblables dans de nombreux langages soit plus un concours de circonstance que le fruit d'une normalisation?

    Si à l'occasion quelqu'un connait des bibliothèques/programmes qui gère les regex et qui soient en open source je suis preneur.

    L'idée étant d'étudier la possibilité de créer une bibliothèque d'objets prenant en charge ces fameuses regex car elles manquent cruellement dans le langage que j'utilise au quotidien (ABAP)

    Merci beaucoup et désolé si ce message s'avérait être à la mauvaise place, je ne savais pas du tout ou j'aurais pu le mettre d'autre ^^

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    je crois que c'est un standard fondé sur la syntaxe perl (à vérifier)

    perl est un très bon langage si tu veux faire beaucoup d'expressions régulières... mais après tout dépend du contexte
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gorgonite
    je crois que c'est un standard fondé sur la syntaxe perl (à vérifier)
    perl 1.0 date de 1987

    Il y a eu beaucoup de travail theorique sur la theorie des langages a la fin des annees 50, je suis sur que l'equivalence que j'ai donnee etait connue au debut des annees 60, mais peut-etre depuis longtemps auparavent.

    perl a tire l'idee et la syntaxe des expressions regulieres d'outils comme sed, grep qui ont ete decrit au plus tard dans "Software tools" par Kernighan et Plaugher dans les annees 70 et en a etendu les capacites avec celles de langages plus ou moins specialise dans le traitement de chaines comme SNOBOL 4 (fin des annees 60 si je ne me trompe pas, mais la syntaxe n'est pas celle dont on a l'habitude). Voir aussi icon pour un descendant de ces langages.

    Mais effectivement, la syntaxe des expressions regulieres de perl est devenu un standard de fait (un facteur important est l'existance de pcre qui en fourni une implementation).

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    A propos des expressions regulieres, il y a deux choses:
    - il y a la theorie des langages qui etablit que trois methodes (les expressions regulieres, les automates finis, les grammaires regulieres) decrivent exactement le meme ensemble de chaine. D'apres ce que j'ai compris -- toutes mes references la-dessus sont en anglais -- le terme francais correct est "rationnel" (au moins pour les expressions, pour les grammaires je n'en sais rien) mais pas mal de gens utilisent quand meme reguliere.
    - il y a des extensions a la syntaxe des expressions rationnelles qui augmente aussi la capacite de description. Ces extensions sont presentes par exemple dans emacs, sed, egrep, perl.

    Perso j'ai tendance a utiliser "expression rationnelle" quand il est important que ce soit l'ensemble detectable par les automates finis, et "expression reguliere" pour tout moyen de designer de maniere compacte un ensemble de chaine.

    Citation Envoyé par cladsam
    J'aimerais savoir s'il existe un standard concernant les Regex ou si, le fait qu'elles soient semblables dans de nombreux langages soit plus un concours de circonstance que le fruit d'une normalisation?
    A ma connaissance il n'y a pas une norme (POSIX decrit au moins deux syntaxes d'expression reguliere) mais toutes les implementations se sont plus ou moins copiees.

    Si à l'occasion quelqu'un connait des bibliothèques/programmes qui gère les regex et qui soient en open source je suis preneur.
    pcre (compatibles avec celles de perl), Spencer regexp, boost

    L'idée étant d'étudier la possibilité de créer une bibliothèque d'objets prenant en charge ces fameuses regex car elles manquent cruellement dansle langage que j'utilise au quoitidien (ABAP)
    Deux grandes classes de techniques sont en presence:
    - interpreter l'expression reguliere directement (par exemple avec un algo recursif)
    - compiler l'expression reguliere sous une forme interpretable avec une meilleure complexite (s'il s'agit d'une expression rationnelle, un automate fini)

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    A propos des expressions regulieres, il y a deux choses:
    - il y a la theorie des langages qui etablit que trois methodes (les expressions regulieres, les automates finis, les grammaires regulieres) decrivent exactement le meme ensemble de chaine. D'apres ce que j'ai compris -- toutes mes references la-dessus sont en anglais -- le terme francais correct est "rationnel" (au moins pour les expressions, pour les grammaires je n'en sais rien) mais pas mal de gens utilisent quand meme reguliere.
    Bonjour
    Quelles références? Tu as des bons bouquins à conseiller sur les automates finis et les grammaires régulières?
    Je me souviens que lorsque j'avais étudié perl pour débuter en prog. Ayant bcp de littéraires dans la salle, la prof (qui était une prof de linguisitique...) avait introduit les regexps via les théories (assez anciennes en fait) de Chomsky. Que je n'ai jamais lu...(j'ai plus lu les "linguistes" anglo-saxons tels que Davidson)
    Pour les regexp et la question du po j'ai pas mal potassé ce bouquin: http://linux.developpez.com/livres/#L2841772365 qui est pas mal en effet.

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Gnux
    Bonjour
    Quelles références? Tu as des bons bouquins à conseiller sur les automates finis et les grammaires régulières?
    Les references que j'ai sont des references d'informaticien.

    A.V. Aho, and J.D. Ullmann. The Theory of Parsing Translating and Compiling.

    ou n'importe quel autre bouquin sur les compilateurs. Bien que pour l'aspect theorique celui que je cite est je crois insurpasse. Comme bouquin disponible, voir par exemple: Parsing Techniques - A Practical Guide by Dick Grune and Ceriel J.H. Jacobs qui est plus recent et plus pratique (je compte me payer la deuxieme edition quand elle sortira, ce domaine etant un de mes dadas).

    Il me semble me souvenir d'un autre bouquin par Aho/Ullmann que je n'ai pas lu mais encore plus axe sur la theorie du langage et moins sur la compilation. Je suis a peu pres sur qu'il est cite dans la bibliographie de The Theory of Parsing Translating and Compiling. Si ca t'interesse, envoie moi un email, je regarderai dans ma bibliotheque.

    Je me souviens que lorsque j'avais étudié perl pour débuter en prog. Ayant bcp de littéraires dans la salle, la prof (qui était une prof de linguisitique...) avait introduit les regexps via les théories (assez anciennes en fait) de Chomsky.
    Chomsky est le seul linguiste dont l'informaticien moyen a entendu parle.
    Tout le travail theorique la dessus etait a peu pres fini a la fin des annees 60 debut des annees 70. Apres, ce ne fut que des ameliorations aux limites sans grand impacts pratiques (sauf peut-etre en linguistique justement ou pouvoir parser rapidement des grammaires ambigues a de l'interet) meme si on peut parfois le regretter (la representation compacte de tables pour LALR(k) par exemple, ou ce qui s'est fait dans le traitement des erreurs).

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet

    Chomsky est le seul linguiste dont l'informaticien moyen a entendu parle.

    faux... je suis un informaticien très moyen et j'en connais necessairement d'autres.. mais ca doit etre du au fait que ma compagne a un doctorat de linguistique ...

  8. #8
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    Auriez-vous des références sur les algorithmes?
    parceque ce que je trouve c'est :
    - comment créer des expressions rationnelles.
    - comment utiliser des bibliothèques de fonctions pour demander
    machaine.matches(maregex) ?

    Mais derrière cela, il y a le moteur qui va prendre la chaine plus l'expression et faire la vérification. Et c'est ce fonctionnement la que j'aimerais étudier en détail.

  9. #9
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    Merci beaucoup pour vos reponses, je crois que je vais m'évertuer à éplucher le code de pcre car ca semble plutot tres complet
    Lorsque j'utilisais ces petites expressions en .NEt, j'étais loin d'imaginer qu'il se cachait autant de théorie derrière ^^

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/09/2006, 16h44
  2. Réponses: 5
    Dernier message: 20/09/2006, 14h16
  3. [RegEx] preg_replace et syntaxe des expressions régulières
    Par MmoulinexX dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 00h57
  4. Réponses: 1
    Dernier message: 03/02/2006, 13h35
  5. [RegEx] Traduire des "expression régulières" VBA en PHP
    Par jcachico dans le forum Langage
    Réponses: 13
    Dernier message: 19/01/2006, 15h02

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