Forum Programmation.autre Regexp (suite)

Posté par  (site web personnel) .
Étiquettes : aucune
0
24
août
2004
Bon j'ai finalement réussi a trouver un tuto regexp pour java assez bien fait et en francais (http://cyberzoide.developpez.com/java/regex/(...))

Les bases des regexp sont simples, mais on est très vite largué face a ca :
/^((?:(?:(?:(\w|~)[~\.\-\+\/]?)*)(\w|~))+)\@((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.([a-zA-Z]{2,6})$|^$/;

Comment lire une telle regexp de facon claire sans se prendre trop la tete ? je ne sais pas par quoi commencer tellement y en a, je suppose qu'en le lisant de gauche a droite on doit naturellement constitué une sorte de phrase expliquant le filtre, mais j'y arrive pas !!


Des conseils pour traduire une telle expression ? (bien entendu je sais a quoi elle correspond puisque c'etait indiqué là ou je l'ai trouvée, et je suppose que certain d'entres vous la connaisse aussi, donc pas la peine de me répondre simplement en me disant a quoi peut servir une telle regexp, moi je veux savoir le comment)


Bref, merci a celui/ceux qui auront la patience de m'expliquer la marche a suivre pour décoder l'engin...


Merci.
  • # verification de mail

    Posté par  (site web personnel) . Évalué à 1.

    une simple vérification de mail !

    il faut grouper les parenthèses puis plutôt de droite à gauche ça permet d'identifier les opérateurs de gourmandises (+ * ?)
    Le (?: est un cas particulier
  • # re: Regexp (suite)

    Posté par  . Évalué à 1.

    A moins d'avoir à reprendre le code de quelqu'un, je pense que tu auras rarement besoin de comprendre une regexp.
    Le but étant d'en écrire, et bien lance toi dans l'écriture armé de ton tuto.
    Sinon, tu tiens vraiment à comprendre, je pense qu'il faut que tu t'y mettes tranquillement en lisant de gauche à droite et en essayant sur tout de visualiser ce que cela peut matcher.
    Inutile d'essayer de formuler une phrase permettant de "résumer" ta regexp car je pense que les regexps sont de par leurs conceptions la façons optimale d'exprimer ce que tu cherches à matcher.
    • [^] # Re: re: Regexp (suite)

      Posté par  (site web personnel) . Évalué à 1.

      Mais meme pour l'ecriture c'est pas evident lol
      J'aurai jamais trouvé une regexp comme celle-ci.

      J'arrive a visualiser le probleme dans ma tete (l'adresse doit faire n caracteres de long, contenir des lettres, chiffres, points, ou underscore, avoir une extension, un nom de domaine, etc)
      Mais après pour le mettre en forme c'est une autre histoire, je sais pas par où commencer, et mon tutorial ne couvre que des ptits exemples faciles.

      Bref, pour l'instant j'suis pas encore le roi des regexp (et je comprend pourquoi o'reilly a réussi a sortir un livre de près de 500 pages sur les regexp lol)

      Quelqu'un a t il des astuces pour visualiser et ecrire efficacement des regexp ?

      Merci
      • [^] # Re: re: Regexp (suite)

        Posté par  . Évalué à 2.

        Quelqu'un a t il des astuces pour visualiser et ecrire efficacement des regexp ?

        kregexpeditor
        Je connais pas tellement, mais son explication m'apparait "plus claire" que l'expression brute elle meme.
        • [^] # Re: re: Regexp (suite)

          Posté par  (site web personnel) . Évalué à 1.

          Je suis sous debian unstable et actuellement ce paquet n'est pas dispo car il dépend d'une version de kdelibs qui n'est visiblement pas encore prête (je suis sous gnome)

          Mais j'essaye dès qu'il est dispo :)
          • [^] # Re: re: Regexp (suite)

            Posté par  . Évalué à 1.

            Il est déjà dispo, je viens de le lancer sur ma sid, un dist-upgrade devrait te permettre de l'installer.
            • [^] # Re: re: Regexp (suite)

              Posté par  (site web personnel) . Évalué à 1.

              A part m'avoir viré evolution, le dist-upgrade n'a rien changé en ce qui concerne kregexpeditor : toujours pas dispo dû a kdelibs
              • [^] # Re: re: Regexp (suite)

                Posté par  . Évalué à 1.

                Bizard, j'en ai fait un tres recamment (moins de 2 ou 3 jours), kregexpeditor est installé et mon evolution fonctionne toujours. J'ai :


                dpkg -l kdelibs kregexpeditor evolution

                ||/ Nom Version Description
                +++-==============-==============-============================================
                ii kdelibs 3.3.0-1 KDE core libraries metapackage
                ii kregexpeditor 3.3.0-1 graphical regular expression editor plugin
                ii evolution 1.4.6-2 The groupware suite
                • [^] # Re: re: Regexp (suite)

                  Posté par  (site web personnel) . Évalué à 1.

                  Non c'est bon, en fait j'ai trouvé pourquoi mon apt faisait des siennes (j'explique un peu plus haut dans le forum le pourquoi, donc pour faire court, j'avais pinné des paquets, et j'avais oublié de purger mon /etc/apt/preferences, du coup ya plein de libs qui ne s'installaient pas.)

                  Voilou
      • [^] # Re: re: Regexp (suite)

        Posté par  (site web personnel) . Évalué à 1.

        par hasard (en faisant un filtre dans kmail en fait) j'ai découvert que kde avait un éditeur de regexp : kregexpeditor

        vala, je ne sais pas si cela peut t'aider, je n'ai pas approfondi le sujet, mes regexp sont souvent assez simples pour que je me débrouille trés bien en les tapant à la main.

        Biens, j'ai essayé avec ta regexp, ca en fait une representation graphique qui est assez lisible, bref, si t'as kde sous la main, tu ne perds rien à essayer.
  • # outils

    Posté par  . Évalué à 3.

    Je fais rarement du « reverse engineering » d'expression rationnelle. J' ai pas vraiment de méthode. Par contre il existe quelques outils sympathique qui te seront peut-être utiles:

    http://packages.debian.org/testing/devel/visual-regexp(...)
    http://packages.debian.org/testing/utils/txt2regex(...)
    http://packages.debian.org/testing/x11/regexplorer(...)
    http://packages.debian.org/testing/python/kodos(...)
    http://packages.debian.org/testing/kde/kregexpeditor(...)


    J'aime bien txt2regex car il est écrit entierement en bash, son vrai nom est ^txt2regex$ ;-)
    • [^] # Re: outils

      Posté par  (site web personnel) . Évalué à 1.

      Là je teste visual-regexp, c'est pas mal, avec la coloration syntaxique on voit en temps réel les changements de la regexp

      C'est pratique pour apprendre des trucs, merci
  • # Ayé

    Posté par  (site web personnel) . Évalué à 1.

    [\\ \\n^]([a-zA-Z0-9])([a-zA-Z0-9._-]+)@([a-zA-Z0-9])([a-zA-Z0-9-]+)(.)([a-z]{2,3})[\\ \\n$]

    Ma 1ère regexp :)
    Bon elle pue surement, mais bon j'ai mis du temps alors on ne se moque pas !

    Vous en pensez quoi ?
    • [^] # Re: Ayé

      Posté par  (site web personnel) . Évalué à 2.

      s/{2,3}/{2,6}/
      Il faut aussi accepter les domaines en .museum !
      • [^] # Re: Ayé

        Posté par  . Évalué à 1.

        En parlant de ça, qu'est-ce qui empêche d'avoir une adresse e-mail en toto@fr (a part l'absence de MX sur le .fr) ?

        Après tout, les TLD sont des domaines comme les autres :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.