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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    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

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    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)

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    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).

  5. #5
    Membre émérite

    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
    Points : 2 844
    Points
    2 844
    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 éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    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 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    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 ^^

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    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 ...

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    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.

  10. #10
    Membre émérite

    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
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par cladsam
    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.
    Tu veux donc connaitre les analyses syntaxiques et lexicales que font subir les interpréteurs aux regex ? C'est ça?

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Oui c'est ca car le but est d'équiper de ces fonctionnalités un langage qui en est dépourvu. Evidemment, dans ce cas la, le plus simple peut être de changer de langage mais dans mon cas, cette possibilité ne s'offre pas .

  12. #12
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Habituellement ce type de problématique s'adresse en faisant une interface à PCRE (par exemple) pour le langage concerné (il n'est pas extensible en C ton langage ?). Sinon si les mécanisme t'intéresse ça m'étonnerait que tu n'aies pas les réponses à tes questions dans les bouquins que Jean-Marc Bourguet t'a conseillé, ce sont vraiment les références. Si ce n'est pas le cas, tu devras t'orienter vers la théorie des automates déterministes (et non-déterministes) à états finis et sur la théorie des grammaires et des classes de langages reconnaissables. Tu peux également lire les implémentations actuelles, elles sont libres après tout ! (mais ne lis pas trop le code traitant des regexs en Perl, nous ne garantissons pas ta santé mentale par la suite... )

    --
    Jedaï

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Et bein le langage en question peut etre interfacé avec d'autres langages seulement dans la société ou je travaille, il n'ets pa sposisble d eprendre ce genre de décision à mon niveau.
    Pour information c'est de l'ABAP, le jolie langage de programmation de SAP R/3 ... mon idée était donc de construire une collection d'objets qui premettraient d'ajouter à l'Abap les fonctionnalités des regex.
    Je vais regarder du côté des ouvrages que vosu avez conseillé, je pense que déjà la , je pourrai sans problème trouver de quoi faire ^^

  14. #14
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Un site rigolo à ce sujet (les expressions régulières) : http://osteele.com/tools/reanimator/ .
    (cette page est faite avec OpenLaszlo, y a-t-il des personnes ici qui connaissent un peu ?)

    --
    Jedaï

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

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Je ne connais ni ce site ni OpenLaszlo mais ca a l'air interessant et je vais me pencher sur ce site merci beaucoup ^^

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/09/2006, 15h44
  2. Réponses: 5
    Dernier message: 20/09/2006, 13h16
  3. [RegEx] preg_replace et syntaxe des expressions régulières
    Par MmoulinexX dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2006, 23h57
  4. Réponses: 1
    Dernier message: 03/02/2006, 12h35
  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, 14h02

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