Forum Programmation.perl expression régulière

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-3
7
août
2015

j'aimerais de l'aide pour une expression régulière avec ceci :

my @header = (<DATA> =~ /([a-z_]+)/g);

j'obtiens des noms découpés. Les noms sont du genre

shm_1tb_unsh_enable,krlock_confer2self, ie5_old_multicast_mapping,

merci bien de votre aide

  • # On Henri ...

    Posté par  . Évalué à 6.

    … ou on en pleure

    • [^] # Re: On Henri ...

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

      C'est moi ou les gens qui demandent de l'aide oublient de plus en plus de poser une question simple claire et nette ?

      Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

      • [^] # Re: On Henri ...

        Posté par  . Évalué à 4.

        Je crois qu'il veut de l'aide pour une expression réguliere. A verifier

  • # Chiffres ?

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

    J'ai corrigé l'orthographe de la question.

    Vu les noms, la regexp devrait prendre en compte les chiffres.

  • # outil pour construire ses regexp

    Posté par  . Évalué à 5.

    perso quand j'ai un doute avec une regex, je demande à txt2regex
    dispo dans certains linux.

    ca va de poser des questions sur la chaine de caractere,
    genre "commence par un caractere, un ou plusieurs, suivi d'un caractere particulier (ici le _)…

    et ca va t'afficher la regex correspondante pour perl, shell, etc

  • # \w

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

    Tu veux peut-être :

    my @header = (<DATA> =~ /(\w+)/g);

    \w est une classe qui comprend les lettres, chiffres et _.

    • [^] # Re: \w

      Posté par  . Évalué à -10. Dernière modification le 07 août 2015 à 11:39.

      vous (Warwick, Framasky et Benoit) etes incroyable sur ce forum, cela montre qu'il ya des gens certe doue dans la vie mais qui on encore des choses a apprendre de la vie.
      comme vous pouvez bien vous exprimerr et ecrire la langue Francais j'aimerai que quelqu'un de tous ces ignorants qui on intervenu me dise le nom du livre qu'il a publier.
      si vous etes pas a la hauter de repondre a une question pose, cesse de critique l'othographe . cela n'a aucune importance.
      comme c'est triste de remarquer qu'il ya des personnes qui on encore des choses a apprende de la vie.
      par ailleur Neox, Anaseto, Sacha et Pnchbllz je vous remerci de vos propositions

      • [^] # Re: \w

        Posté par  . Évalué à 8.

        repondre a une question pose

        Henri quand on oublie de poser la question dans son post c'est un peu normal de se faire chambrer :)

        On prend tous de notre temps pour aider les autres mais pour ma part si il n'y a pas de question clairement posée je ne vais pas tenter de décrypter ce que la personne peut bien vouloir et simplement passer mon chemin.

        • [^] # Re: \w

          Posté par  . Évalué à -10.

          Christophe ,
          quand on ne comprend pas une question on peut encore demande a son Auteur d'etre plus clair ,
          c'est un Forum, je vais du fait que si quelqu'un pose une question sur forum on peut aussi lui poser la question d'etre plus clair, et non passe le temps a trouver tout ce qu'il aura commi comme faute.
          et laisse moi te dire , je suis pas longtemps sur ce forum et la plupart des gens qui on trouve ma question ridicul et plein de fautes, son ceux qui ne m'on jamais repondu a une question pose de ma part.
          je vais du fait que sur ce Forum on a affaire au personnes qui on faite de haute etude donc venant de ceux la je toruve cela tres bas.

          • [^] # Re: \w

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

            Et sinon ta question ? :p

            • [^] # Re: \w

              Posté par  . Évalué à -6.

              Salut Sacha,
              tu sais je ne suis pas un bon Programmeur j'apprend et je suis en entreprise pour un stage et malheureusement lorsque j'ai un probleme je ne peus pose mes questions a null d'entre elle car il ne s'y connaissent pas du tout. et c'est la raison pour laquel je viens demander de l'aide sur ce Forum. il est bien vrais mais question peuvent paraitre bete mais on peut me demander de reformuler ma question, et je reconnais une chose mon Francais ecrit n'est pas de bon niveau. mais c'est pas cela la raison pour passer le temps a se moquer des personnes.

              ma question concerne les regex (expressions regulieres) car j'ai une liste de noms compose de tout genre de caracteres(§ % & {} ?) que tu puisse imagine ceci aussi bien en debut comme au milieu des nom et malheureusement le regex donc j'ai utilise ne marche pas donc c#est pourquoi je me suis rendu sur ce forum.
              voila ce que j'ai utilise my @header = ( =~ /([a-z_]+)/g);
              en suite my @header = ( =~ /(\w+)/g);
              la deuxieme que j'ai recu sur ce forum fait deja mieu mais a encore des limites car lorsqu#il rencontre le % il l'ignore

              • [^] # Re: \w

                Posté par  . Évalué à 3.

                Salut Henri,

                Je comprends que tu aies des problemes avec l'orthographe, voire, de maniere plus generale avec l'expression ecrite, mais vu notre experience commune sur une de tes questions precedentes (et je fais reference a ca), sans compter toutes les autres demandes que tu as postees sur le forum, je me vois dans l'obligeance de te faire remarquer que ce probleme d'expression est un probleme pour toi, pour nous, et pour ta capacite a apprendre le Perl (je me restreindrais a ce domaine, puisque tel est le sujet de toutes tes demandes).

                A chaque reponse que je t'ai tente de t'apporter, tu as fait diversion, comme si tu n'arrivais pas a admettre qu'il y avait matiere a reflexion. Je parle en mon nom, mais je suis persuade que nombres de personnes ayant cherche a t'aider serons du meme avis. Mec, tu noies le poisson a chaque fois! Comment veux tu que nous reagissions ?? La programmation, quel que soit le language, est affaire de syntaxe, de logique et surtout de mise a plat de ses idees. Du rationnel et du concret. Il ne s'agit que de cela si l'on ne parle pas d'art (comme la demo scene).

                S'il te plait, je t'en prie, pour la sante mentale de tous, fais l'effort de comprendre que tu ne peux pas poser des questions de maniere aussi abstraite, non contextualisee et t'attendre a des reponses qui conviennent parfaitement a ta situation. Nous ne sommes pas des fabriquants de briques LegoPerl.

                Par exemple, ici, nous n'avons aucune idee de quelles donnees DATA contient.
                De deux choses l'une: sois nous sommes tous, a part toi, des debiles attardes impatients, soit tu tu poses mal tes questions.

                Peut-etre que ta langue maternelle n'est pas le francais; le preciser permettrait d'augmenter le niveau d'indulgence de certains a ton egard?

                Je te remercie par avance pour ta reponse, constructive si ce n'est trop demander.
                Saches cependant que tu ne peux pas ne pas faire d'effort ici sans que cela te retombes sur le coin de la gueule. Si ca ne te conviens pas, …

                A bon entendeur.

                P.S.: moi aussi, je fais des fotes, mon clavier n'est pas azerty, et n'a pas d'accent. Pourtant, mes reponses precedentes etaient un minimum corrigees malgre les heures auxquelles je t'ai repondu (GMT+9).

                http://linuxfr.org/nodes/105502/comments/1600143
                http://linuxfr.org/nodes/105502/comments/1600359
                http://linuxfr.org/nodes/105502/comments/1600342
                http://linuxfr.org/nodes/105502/comments/1600354
                http://linuxfr.org/nodes/105502/comments/1600363

                D'ailleurs, ce commentaire est non relu, et je le revendique!

                • [^] # Re: \w

                  Posté par  . Évalué à -8.

                  Salut Warwick,
                  je ne vais pas dire que tu ne n'a jamais aide, j'avoue que tu m'as tres souvent aide il ya aussi Neox vous particulierement vous m'avez toujours faite des Propositions et dans mon message plus haut j'ai bien dit la plus part et non tous.
                  donc je reconnais bien ton aide. et c'est tres gentil de ta part. j'ai ete juste ete tres irite de lire ton intervension plus haut.

                • [^] # Re: \w

                  Posté par  . Évalué à 3. Dernière modification le 07 août 2015 à 18:03.

                  mon clavier n'est pas azerty, et n'a pas d'accent

                  Pour toi, pour Henri, pour tous, ceci n'est en rien une excuse. Au mieux ceci est une explication, explication non satisfaisante quand on connaît tous les moyens de placer un accent avec un clavier querty. J'en utilise un pour ma part, je sais de quoi je parle.

                  • Entrer les unicodes à la mano. Ça s’apprend, ça se fait. Il n'y a pas tant de diacritiques que ça.

                  • Utiliser Multi_keys, a.k.a. touche Compose. (C'est celle que j'utilise personnellement).

                  • Utiliser une configuration qwerty international.

                  J'en ai marre de voire cette excuse, « Sorry, I use qwerty layout ». Quand je la lis, je lis que de l'impolitesse. Même si lire « j'ai la flemme de mettre les accents » m’énerve, et sérieusement, ça me semble moins hypocrite.

                  • [^] # Re: \w

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

                    J'en utilise un pour ma part

                    Sérieux ? Comment tu as fait pour écrire "querty" alors ? :)

      • [^] # Re: \w

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

        Sans méchanceté aucune : tu aurais dit

        Je veux séparer des données qui sont collées avec des virgules, qu'est-ce qui ne va pas avec ma regex ?

        bah tu vois, ça aurait été plus simple et je t'aurais aidé. Désolé, mais je ne sais même pas comment Ack a réussi à trouver ce que tu cherchais à faire. Navré, mais autant je veux bien répondre à des questions de programmation, autant me casser la tête pour comprendre une question qui, au final, tient en une ligne, ça m'attire pas des masses.

        Quand j'ai dit

        C'est moi ou les gens qui demandent de l'aide oublient de plus en plus de poser une question simple claire et nette ?

        Bah tu vois, si t'as pas compris que je te demandais une question simple claire et nette, je vois pas pourquoi tu te plains qu'on râle quand il faut décrypter une demande.

        Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

  • # Utilisation de split?

    Posté par  . Évalué à 2.

    Si l'objectif est d'avoir un tableau contenant les noms qui sont séparés par des virgules, pourquoi ne pas utiliser split:

    my $input_data = "shm_1tb_unsh_enable,krlock_confer2self, ie5_old_multicast_mapping,";
    my @header = split(',', $input_data);
    • [^] # Re: Utilisation de split?

      Posté par  . Évalué à -7.

      Ack,
      je reconnais que je me suis mal formuler plus haut, mais li mon message juste au dessus du tien.
      je pense que tu pourras me comprend.

      • [^] # Re: Utilisation de split?

        Posté par  . Évalué à 2.

        Je ne suis toujours pas certain de comprendre. Pourrais-tu nous donner la chaîne d'entrée, et le tableau de sortie que tu souhaite.

        Il me semble que la fonction split correspond très bien à la situation.
        Si tu souhaite vraiment utiliser une expression régulière :

        use strict;
        use warnings;
        use Data::Dumper;
        
        my $input_data = "aaa%aa,b&bbb, cccc_c\$cc,";
        my @header = ($input_data =~ /([^,.]+)/g);
        
        print Dumper(\@header);

        sortie

        $VAR1 = [
                  'aaa%aa',
                  'b&bbb',
                  ' cccc_c$cc'
                ];
        • [^] # Re: Utilisation de split?

          Posté par  . Évalué à -4. Dernière modification le 07 août 2015 à 14:59.

          Salut Ack,

          c'est exactement cela que je cherchais tu l'as trouve sans toute fois bien me comprendre c'est lui il marche bien. merci beaucoup

          my @header = ($input_data =~ /([^,.]+)/g);
          • [^] # Re: Utilisation de split?

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

            Je suis persuadé que tu n'as même pas compris la réponse. :/

            • [^] # Re: Utilisation de split?

              Posté par  . Évalué à -4. Dernière modification le 07 août 2015 à 15:56.

              pardon explique donc, car j'ai toujours eu des problemes avec les expressions regulieres, si tu peus m'expliquer ca me fera plaisir

              • [^] # Re: Utilisation de split?

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

                Si tu donnes un poisson à un homme blablabla…

                • [^] # Commentaire supprimé

                  Posté par  . Évalué à -6. Dernière modification le 07 août 2015 à 20:19.

                  Ce commentaire a été supprimé par l’équipe de modération.

                  • [^] # Commentaire supprimé

                    Posté par  (site web personnel) . Évalué à 1. Dernière modification le 07 août 2015 à 20:20.

                    Ce commentaire a été supprimé par l’équipe de modération.

                  • [^] # Modération

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

                    Merci de rester courtois dans les échanges, conformément aux règles de modération en vigueur sur le site.

                    • [^] # Re: Modération

                      Posté par  . Évalué à -7. Dernière modification le 07 août 2015 à 21:53.

                      je suis de nature tres courtois mais on a des gens qui avance des phrases pas du tout catholique au gens. pour qui es ce qu'il se prend. je n'ai malheureusement pas lu son message avant que celui ci soit efface , ce genre de personnage n'a rien a faire dans un forum, qui sense etre pour des personnes instruite

                    • [^] # Re: Modération

                      Posté par  . Évalué à -6.

                      le moderateur laisse passe des phrase comme du genre
                      "Si tu donnes un poisson à un homme blablabla… "
                      on n'a pas besoin d'analyser pour comprendre, c'est du mepris total

                      • [^] # Re: Modération

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

                        Cela fait référence de façon tronquée à une citation classique « Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours. » Je ne vois pas de mépris là dedans, la phrase ne dit pas « ne lui file pas de poisson, qu'il se débrouille » mais « si tu peux lui apprendre à pêcher, alors il sera autonome ». On peut considérer le fait d'apprendre à poser des questions claires et le fait de répondre de façon courtoise comme faisant partie des choses à apprendre lorsque l'on veut utiliser des moyens de communication publics et obtenir des réponses utiles.

                        Sinon, il n'y a pas un modérateur mais une équipe de modération (dont je fais partie).

                        • [^] # Re: Modération

                          Posté par  . Évalué à -7.

                          Moderateur,
                          je dirai que si il faut a tout pris applique votre << Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours. » ce forum n'auait meme plus son sens d'existe parceque c'est sense etre un lieu d'echange d'idee et si on a des Problemes dans le developement, et null n'est oblige de reagir a la publication d'une question, si on trouve la question bete, il est simple de s'abstenir que d'avance des mots qui ne font pas avance dans la resolusion de la question pose. Moderateur Je vous prie de souvent analyser vos mots avant leur publication, ou alors vos prise de position.

                          • [^] # Re: Modération

                            Posté par  . Évalué à 4.

                            je dirai que si il faut a tout pris applique votre

                            Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours.

                            ce forum n'auait meme plus son sens d'existe parceque c'est sense etre un lieu d'echange d'idee

                            pourtant, plutot que de copier/coller les solutions des autres,
                            comprendre et apprendre te permet de gagner en autonomie, d'adapter les solutions que les uns et les autres vont te proposer,
                            puis plus tard, toi aussi, revenir ici donner des solutions, la boucle sera bouclée.

                            ainsi nous t'aurons appris à pecher, tu sera devenu autonome,
                            et plus tard tu apprendras à pecher à d'autres.

                            • [^] # Re: Modération

                              Posté par  . Évalué à -6. Dernière modification le 09 août 2015 à 19:37.

                              Salut Neox,
                              vous alle beau dire ce que vous avez a dire cela n'a pour moi aucun sens car null est oblige de repondre a une question pose sur un forum et avec cela tout est clair.
                              Avant de venir poser ma question sur le forum je me donne de la peine a chercher a la resoudre, et comme je l'ai deja dit nul n'est oblige de reponse a une question pose sur un forum, c'est facultatif, et meme si pour une autre personne la question semble tres bete ou evidante il faut savoir que les personnes n'ont pas la meme faculte de pouvoir retenir les choses, il ya des personnes une fois et il a pige, et d'autre il en faudra 3 ou voir 4 fois pour qu'il pige.
                              et donc comme je l'ai deja dit que de se mettre a lancer des Mots deplace aux gens autant mieu ignore la question pose et cherche ailleur.
                              car meme celui qui publi une solution donne est parfois aussi fier d'etre entrain d'aide les gens. ou alors dire que le forum est pour certain categorie de personne(Professionel) qui s'y connaissent deja.

              • [^] # Re: Utilisation de split?

                Posté par  . Évalué à 5. Dernière modification le 07 août 2015 à 17:13.

                Expliquer cela en un post ça sera (très) compliqué et il y de bonnes doc qui existent déjà un peu partout sur le net. Elles feront bien mieux que nous en quelques lignes ici.
                En français sur le sujet : http://culot.org/public/Docs/regexp.html devrait beaucoup t'aider. A garder en marque page car on ne se souvient jamais de tout au début :).

                Sinon pour ton sélecteur :

                Dans le première expression :
                /([a-z_]+)/g

                Sélectionne les caractères alphanumériques minuscules (a-z) et underscore (_) lorsque'ils sont un ou plusieurs (+). Les crochets [] définissent le groupe de caractères en question. Le + venant juste après, n'importe quel caractère du groupe sera pris en compte par la règle "un ou plusieurs".

                La variante avec \w sélectionne un alphanumérique minuscule ou majuscule ainsi que les chiffres. C'est équivalent à [0-9a-zA-Z_]

                La dernière utilise un ^ au début du crochet/groupe. Ce ^ signifie "tout ce qui n'est pas". Assorti à la virgule et à un point, tu sélectionnes donc tout ce qui n'est pas virgule ou point.
                Attention car utilisé en dehors du crochet le ^ peut aussi signifier "commence par", il ne faut pas les confondre.

                Quand au modifier /g pour global il définit que l'expression se fait sur tout le texte / autant de fois qu'elle est trouvée.

Suivre le flux des commentaires

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