Session du 17 décembre 2024 à 21h00
TOSA & Certifications
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Session de mentorat : regex
Le module re ce n'est pas pour dire bonjour à nouveau.
Dans ce mentorat, on va parler regex.
00:00:00 :Et voilà, on est parti pour l'enregistrement.Bon, rebonsoir à tous, comme vous avez pu le voir au programme ce soir, on va s'attaquer un petit peu aux regex.
00:00:13 :Donc ce que je vais faire, c'est que je vais essayer d'abord de vous présenter ça en deux parties.On va parler vraiment des regex dans leur grande généralité.
00:00:20 :Et ensuite, on va passer directement à l'utilisation des regex avec Pipon, donc avec le module R.Alors, les regex, qui s'en est déjà servi ?
00:00:38 :Ah ouais, moi, dans certains exercices, je me suis amusé à le faire.Alors, on va faire plus simple, tout le monde s'en est servi en fait des regex.
00:00:50 :Parce qu'en fait, tout simplement, la regex, quand vous faites une simple recherche avec le contrôle F,vous recherchez le mot « bonjour » dans un texte, on est déjà quelque part en train d'utiliser le principe de la regex.
00:01:02 :Donc la regex, l'expression régulière, c'est un terme qui fait vachement peur,parce que souvent on vous présente la regex en vous montrant tous les signes un peu canalistiques,là où on ne sait plus trop ce que ça veut dire, le truc.
00:01:16 :On se dit « waouh, c'est hyper compliqué les regex, je ne vais jamais arriver à comprendre ça ».En fait, la regex, à la base, c'est vraiment une recherche.
00:01:24 :La seule différence qu'il y a avec une recherche simple que vous utilisez tous les jours et une regex,c'est que le principe de l'expression régulière, ils ont ajouté tout un tas de signes qu'ils ont codifiés,qui permet de déterminer, d'affiner un peu plus la recherche.
00:01:42 :Hop, ça arrive, ça arrive.Donc voilà.Généralement, les regex, on va les utiliser pourquoi ?C'est pour faire des recherches dans des grands textes.Alors, je vais vous donner un exemple de ce que j'y vois professionnellement.
00:01:59 :On va recevoir par exemple, on va faire une réquisition à un opérateurpour avoir une liste d'adresses mail qui sont connectées à un site x ou y,et il va nous renvoyer un fichier avec 500 000 adresses mail.
00:02:14 :Tout ce qu'on sait, c'est que nous, l'adresse qui nous intéresse,ça se termine par exemple par wanado.fr.Déjà, on est sur quelqu'un d'assez ancien.Et du coup, pour rechercher à la main toutes les adresses qui sont à wanado.fr sur l'ensemble,
00:02:30 :on peut passer par la recherche base contrôle F, comme je vous l'ai déjà dit,mais bon, ça va quand même prendre un certain temps,où on peut utiliser la regex, où on va lui expliquer que ce qu'on cherche, c'est une adresse mail.
00:02:41 :Donc, on va lui définir avec les signes prévus pour les regexle format que doit avoir cette adresse mail.Donc, une adresse mail, c'est quoi ? C'est des caractères d'abord, un arbre base,
00:02:52 :des caractères, un point et une suite de deux à trois caractères en généralsur 99% des adresses mail.Donc, on va lui indiquer que l'adresse mail a ce format-làet on va pouvoir lui indiquer aussi que, par exemple, après l'arbre base,ce qu'on veut, c'est la chaîne de caractères wanado.fr.
00:03:11 :Le reste, ça ne nous intéresse pas.Quand vous faites une recherche dans un document avec une regex comme ça,ça vous ressort le résultat en quelques secondes.
00:03:19 :Vous imaginez, on passe de 500 000 adresses mail à peut-être 5 ou 6 en quelques secondesgrâce à une regex.Donc, ça vaut vraiment le coup de s'y intéresser.
00:03:29 :Voilà.Je vais commencer à vous montrer un petit peu ce que c'est, tous ces signes.Je vais mettre ça ici.Comme ça, ce sera plus simple.
00:03:45 :Parce que les cours qu'on m'avait donnés, que je reprends, il n'y a pas de grosse craie.Voilà.Hop.Est-ce que vous voyez ?Oui, c'est bon.
00:04:04 :Oui.Alors, ok.Non, ça, ce n'est pas intéressant.On va commencer par les méta-caractères,c'est-à-dire qu'en fait, comment on va lui expliquer un petit peu ce qu'on recherche.
00:04:15 :Donc, vous avez le point qui va dire n'importe quel caractère, ok.Là, ce que vous avez marqué AZ,ça veut dire n'importe quel caractère situé entre A et Z dans l'ordre alphabétique,mais là, en minuscules, ok.
00:04:32 :Si vous voulez que ça soit aussi potentiellement des majuscules,il faut rajouter le AZ majuscule, ok.Ça, c'est les signes rapidement.Je vous montrerai le truc un peu plus détaillé après,mais là, pour l'instant, on est sur le côté un peu rapide de la chose.
00:04:46 :Ensuite, on va pouvoir lui indiquer le nombre de répétitionsqu'on peut s'attendre à avoir ce caractère.Donc, l'étoile, c'est zéro plusieurs fois.Le point d'interrogation, c'est zéro ou une seule fois.
00:04:58 :Donc, par exemple, on pourrait très bien imaginer qu'on met pour l'arrobase,qu'on peut le trouver zéro ou une seule fois, par exemple,parce que le monde des adresses mails avec plusieurs arrobases, c'est plutôt rare.
00:05:09 :Et le plus, ça veut dire que le caractère est au moins présent une fois dans la chaîne, d'accord.Donc, comment ça va se présenter ?
00:05:21 :On peut faire aussi présenter, donc avoir les chaînes de caractèresavec, on peut préciser le caractère, un certain nombre de fois.Donc, on n'est pas obligé d'imiter aux seuls événements que je vous ai présentés avant.
00:05:33 :Étoile, point d'interrogation plus.On peut aussi mettre entre crochets, entre parenthèses crochets comme ça,comme celle qu'on va utiliser, par exemple, dans la string,le nombre du caractère, et devant, on va indiquer le nombre de fois,le nombre de caractères, et on va indiquer à l'intérieur le nombre de fois qu'on va devoir récupérer.
00:05:53 :Donc, par exemple, là, on veut savoir combien on va trouver une répétition de caractères x m fois.Donc, par exemple, on pourrait dire qu'on va avoir 5 x à la suite.
00:06:04 :Si on rajoute une virgule, on revient sur le au moins cinq fois.Et si on fait un espace, ça veut dire qu'on peut dire, par exemple,qu'on va trouver entre 5 et 7, par exemple, x le caractère x à la suite.
00:06:18 :Ok ?Ça passe un peu vite là-dessus, après, si vous êtes perdus,qu'il y a des trucs qui vous semblent trop barbares, n'hésitez pas.C'est bien.
00:06:29 :Pour les chaînes de caractères qu'on a mis entre crochets,là, on peut définir tout une autre, alors qu'on a le az, le az majuscule,mais on a aussi le 09 pour les chiffres.
00:06:39 :Ou le . pour n'importe quel type de caractère.Là, si on met un petit accent circonflexe au début,ça veut dire qu'il faut qu'à ce moment-là, ce qu'on a mis là n'existe pas.
00:06:55 :C'est-à-dire qu'on veut bien tous les caractères, par exemple, là,sauf des lettres minuscules.Donc, on ne veut que des suites de caractères avec des lettres majuscules, par exemple.
00:07:03 :Ok ?Et celui-là signifie qu'en fait, la chaîne de caractères qu'on recherchedoit être à la fin de la ligne que l'on étudie.Parce que oui, donc je vais vous préciser, autant pour moi,la regex va traiter un ensemble d'un document ligne par ligne.
00:07:26 :C'est-à-dire que lui, à chaque fois qu'il rencontre un backslash n dans le codage,pour lui, c'est un groupe dans lequel il doit faire une recherche.
00:07:36 :Donc, il va passer après la ligne suivante, la ligne suivante, la ligne suivante, et ainsi de suite.Vous verrez tout à l'heure, je vous ai préparé un petit texte, justement,pour qu'on fasse des petites manips sur le regex.
00:07:46 :Vous verrez un petit peu mieux comment ça marche.Là, on peut faire des recherches aussi au début et fin de mot, par exemple.Donc, on peut traiter chaque mot de la chaîne de caractères et dire,je veux savoir combien il y a de mots qui commencent par la lettre B, par exemple.
00:08:04 :Ok, hop, ça c'est vite la suite.Ceux qui veulent s'intéresser sur les regex, je pourrais éventuellement vous fournir cette documentation.Vous verrez, bon, après, il faut surtout pratiquer, pratiquer, d'accord ?
00:08:23 :Enfin, je vous fournirai une version épurée de cette documentation.Je ne suis pas censé la diffuser, mais bon, passons.Là, on revient un peu plus précisément sur les histoires d'intervalles que je vous ai expliquées.
00:08:36 :Là, vous voyez, premier, AD, ça veut dire qu'on cherche soit A, soit B, soit C, soit D.Donc, tous les caractères qui existent entre A et D, A et D inclus.
00:08:46 :AZ, comme je vous l'expliquais tout à l'heure, caractère minuscule.09, n'importe quel chiffre.Là, petit piège, on met deux crochets, c'est-à-dire qu'on cherche soit un crochet ou la lettre Z.
00:08:57 :Parce que lorsqu'on met plusieurs piles d'opérations, c'est pas, il faut qu'il y ait les deux, c'est l'un ou l'autre.Je vous l'expliquais tout à l'heure, AZ minuscule, AZ majuscule et 09, c'est soit un caractère minuscule,soit une lettre minuscule, soit une lettre majuscule, soit un chiffre.
00:09:14 :Mais il ne faut pas qu'il y ait une lettre minuscule, une lettre majuscule et un chiffre.C'est clair pour tout le monde, ça ?Oui ?
00:09:22 :Ça, c'est le genre de petits détails en regex qu'il faut faire assez mal très vite.Là, ce que je vous expliquais tout à l'heure, avec l'arc sans circonflexe,n'importe quel caractère en dehors des lettres A et B.
00:09:35 :Pareil, on revient avec le Z.Et là, petite nuance, on ne recherche pas le caractère à sans circonflexe.D'accord ?C'est-à-dire que là, ce qu'il faut faire gaffe, c'est que là, sans circonflexe,le premier va être interprété comme un métacaractère,mais le second va être interprété comme le caractère en soi.
00:10:01 :Un peu comme quand on fait avec les chemins Windows dans Python,où on double l'anti-slash pour faire comprendre à Python qu'en fait,il ne doit pas s'occuper du slash en tant que slash, mais simplement en tant que caractère.
00:10:16 :C'est toujours bon, je n'ai toujours pas perdu grand monde.C'est bon.Tout le monde est en train de se jeter sur la pharmacie avec ses boîtes d'aspirine.
00:10:28 :Alors, on continue.Là, ces métacaractères, ceux qu'on a vus rapidement tout à l'heure,je voulais vous montrer ça parce que, justement, c'est assez parlant.Là, vous voyez mieux un peu à quoi ils fonctionnent.
00:10:45 :Le chapeau circonflexe, il va regarder au début de la ligne.C'est-à-dire que là, il va s'arrêter au niveau de la lettre J.D'accord ?Avec le dollar, il regarde à la fin.
00:10:56 :Il va regarder comment est la fin de la ligne et voir si ça correspond au schéma qu'on lui a demandé.Là, le début de mot, vous voyez bien, il va bien chercher au début de chaque mot.
00:11:06 :C'est pareil pour la fin de mot.Il voit vraiment à la fin de chaque mot.Donc, vous voyez que déjà, rien qu'avec ces quatre caractères-là,quand on veut faire des recherches dans des textes,on a déjà, rien que là, quatre opérateurs quand même assez puissants.
00:11:18 :Parce qu'on va pouvoir définir un format qu'on veut rechercher,un format de chaîne de caractère.Donc, comme je disais tout à l'heure, une adresse mail, peut-être un numéro de téléphone.
00:11:29 :On peut un peu rechercher tout ce qu'on pourrait imaginer comme type de mot ou de terme,du moment qu'on est capable de définir sa structure.
00:11:38 :Et là, vous voyez, on a déjà quatre opérateursqui nous permettent soit de regarder seulement le début des lignes,soit la fin, soit le début des mots, soit la fin des mots.
00:11:45 :J'ai cru entendre quelqu'un qui essayait de poser une question aux autres.Non, c'est bon ?Non, c'est bon.Bon, on enchaîne.Ça, c'est intéressant, parce que c'est cette partie-là.
00:12:07 :Vous voyez, là, on fait deux intervalles.Par exemple, on veut que d'abord, on ait un chiffre situé entre 1 et 4, d'accord ?Et ensuite, un chiffre situé entre 0 et 9.
00:12:18 :Ok ?Donc, du coup, on va trouver tous les chiffres qui commencent,à partir du moment où ils sont égaux à 10,et suivi de ce chiffre-là,on va trouver tous les chiffres qui commencent,à partir du moment où ils sont égaux à 10,et supérieurs jusqu'à 49.
00:12:34 :Donc, on parlait, par exemple, tout à l'heure, des numéros de téléphone.Je vais essayer de vous marquer ça rapidement.Alors, en admettant qu'on n'est absolument pas…Alors, il va falloir que j'aite un petit coup d'œil dans le chat.
00:12:52 :Je vous le mets dans le chat, comme ce sera plus simple.Un numéro de téléphone.On sait qu'en France…Je vais faire ça comme ça, puis tout sera mieux.
00:13:01 :Je vais changer de fenêtre.Celle-là, ce sera mieux.Je vais la mettre un peu plus haut.Avec cet exercice-là, vous allez comprendre un petit peu mieux comment.
00:13:25 :Alors, je vais prendre, pour le cas des numéros de téléphone en France,on va dire qu'on recherche un numéro de téléphone portable, d'accord ?Donc, le numéro de téléphone, il commence par un zéro,puisque là, tout va bien.
00:13:37 :Ensuite,on peut avoir 6 ou 7 dans le numéro, d'accord ?On va prendre une numérotation avec des slashes.Ensuite,le numéro de téléphone,eh bien,on va avoir deux suites de caractères.
00:13:59 :Ce sontle numéro de téléphone portable,et le numéro de téléphone portable.Allô, Stéphane ?Allô ?Je ne sais pas si…Il a perdu.
00:15:22 :Il a perdu, hein ?Il n'a plus de son.Oui, je crois bien, effectivement.Il allait chercher l'aspirine.Ok.Je ne sais pas.Ça va, Biggie ?
00:15:41 :Ok.Eh bien, nous, on est encore tous dedans, en fait.Mais on ne t'entend plus.On ne te voit plus.Il va faire la barbe.
00:16:17 :Il va faire le déjeuner,et il va faire le matin.ouiAllo, vous m'entendez?Ah, ça y est!Tu es revenu?Désolé.Du coup, je suppose que vous n'entendiez pas du toutun très peu mon explication pour la Régex.
00:17:10 :Oh ben rien du toutAh ben c'est pas graveJe vais vous redécrire le truc.On va tout faire, c'est pas un problème.Hop, hop, voilà.
00:17:23 :Donc, je disais,quand on cherche un numéro de téléphone portable,numéro français,on va commencer par un 0.D'accord?Ensuite,on sait que les deux premiers caractèresen France pour les numéros de portable actuellementc'est soit 06 soit 07.
00:17:39 :Donc, on sait qu'après on va avoir un chiffrequi sera soit 06 soit 07.Donc, soit je peux le marquer comme çaou je peux le marquer comme ça.
00:17:48 :Là, si je le marque comme ça,il ne va pas me chercher un 67.Il va me chercher soit un 06 soit un 07.Ok?
00:17:54 :Ah oui.Donc ensuite,on va dire qu'il est séparé par des...on sait qu'il est séparé par des slashes.Du coup,après, ce qu'on sait,c'est qu'on va avoir forcément...
00:18:09 :C'est pas le bon...Le point ça aurait été plus discretà la place des c'est et des slashes.Ouais, mais alors,je n'ai pas pris le point volontairementparce que le point c'est tout caractère.
00:18:19 :Ah oui, oui, il a un rôle.Oui, effectivement.Ce n'est pas grave.Il ne faut qu'il y en ait un qui le dise.Sinon, ce n'est pas drôle.
00:18:29 :Donc ensuite,on sait qu'on va avoirdeux foisun numéro entre 0 et 9.D'accord?Alors, ça c'est bien,mais est-ce qu'on ne pourrait pas faire autrement?
00:18:46 :On va mettre un multiplicateur.Voilà.On factorise en fait.On va mettre...On cherche les chaînes de caractère comme çaqui sont doublées.Et ensuite, hop,parce qu'on peut utiliser tout en regex,on va mettre la parenthèse.
00:19:12 :On sait que cette expression-là,on va la retrouver au moinstrois fois.Et à la fin,on aurahop,à nouveau notre combinaisonde deux chiffres 0 et 9.
00:19:32 :Donc là, on vient de décrireun numéro de téléphone en regex.C'est illisible, je le sais.Alors, en fait,bon là, je vous ai montré vite fait son numéro de téléphone.
00:19:48 :Pour ceux qui voudront s'intéresser au sujet,ce qu'il faut surtout, les regex,c'est décomposer comme je viens de le faire.Vous voulez rechercher une expression,un format d'écriture ou autre dans un texteou définir ce que vous voulez rechercherau sein de votre base de données ou autre,peu importe dans quel contexte vous utilisez votre regex.
00:20:09 :Découpez votre objectif.Là, on a découpé le numéro de téléphone.On a réfléchi comment est composé le numéro de téléphone.Et au fur et à mesure de comment on expliquaitcomment le numéro de téléphone était composé,on arrivait à recréer la regex pour le téléphone.
00:20:25 :Est-ce que ça semble clair pour tout le monde ?Oui.De mon côté, ça va.Les regex, au début, ça fait super peur.Ce qui va être le plus embêtant, finalement,ça va être d'apprendre les différents signes,comment on regroupe les caractères,comment on les utilise, et ainsi de suite.
00:20:48 :Mais il me semble que tout sautant que vous êtes là,vous avez joué à ce jeu-là avec un trucqui s'appelle le langage pluton.Je ne m'abuse.
00:20:55 :Je pense que tout ce qui est dans le langage pluton,vous n'étiez pas forcément évident au début.Et donc, en fait, les regex, c'est simplement ça.
00:21:01 :À partir du moment où vous avez pris en compte les signes,que vous avez travaillé et joué un petit peu avec,vous allez vous rendre compte que finalement,c'était très facile, les regex.
00:21:10 :Ok ?Oui.N'hésitez pas.Maintenant, on va partir un petit peu sur du pluton,parce que c'est un petit peu pour ça qu'on est là.
00:21:22 :Donc, le module, c'est un petit peu comme ça.Donc, le module qui manipule les regex en pluton,il s'appelle RE.Ok ?Ils ont été très originaux dans le nom.
00:21:38 :Alors, hop.Où est-ce qu'elle est ?On va fermer la fenêtre.On va prendre RE.Ah, c'est là.Voilà.Hop.Voilà.Alors, vous voyez ici, j'ai préparé un petit texte.
00:22:00 :Vous le voyez ?Oui.Donc, comme vous voyez dedans, on a des numéros de téléphone,des adresses mail, des dates, des produits, des prix,enfin, un petit peu de tout ce qu'on pourrait imaginer.
00:22:12 :Et donc là, je vais vous montrer maintenant.J'ai préparé quelques petits codes pluton pour jouer avec tout ça.Alors, la première chose qu'on va faire,qu'est-ce qu'il faudrait faire en premier, à votre avis ?
00:22:32 :Ça dépend de ce qu'on cherche.On veut manipuler le texte.Donc, la première chose, on lit le fichier.Voilà.On va lire le fichier.D'accord ?
00:22:42 :OK.Alors, là...Alors, tac, tac, tac, tac, tac, tac.Ouais, je vais mettre plutôt comme ça.Je ne sais pas pourquoi il m'a mis ça, mais ce n'est pas grave.
00:22:57 :Hop là.Ah oui, d'accord, j'ai compris.C'est qu'il avait fait ça à côté.Alors, hop là.Comme ça, vous pourrez retravailler le truc derrière.Voilà.
00:23:20 :Donc maintenant, dans le Data, on a notre fichieret qui se retrouve directement dans le dictionnaire.Donc, si je l'imprime...Là, on dit que j'ai fait une bêtise.
00:23:35 :Hop là.OK.Je lance ça.Qu'est-ce qui se passe ?J'ai fait une bêtise quelque part.Bon, je vais vous le faire propre.J'ai fait une bêtise. Je vais simplifier.
00:23:59 :Hop.Voilà.Voilà.Hop, on laisse tomber.Hop, hop.Normalement, ce coup-ci, on devrait être bon.Qu'est-ce qui va pas ?Ah oui, d'accord, j'ai compris.
00:24:36 :C'est nous, on n'est pas dans le bon dossier peut-être.Voilà, c'est ça.Voilà, ça devrait mieux marcher maintenant.Voilà.Donc là, on a bien le fichier que je vous ai montré tout à l'heure dans le Data.
00:24:46 :Voilà.Du coup, ton programme d'avant, il fonctionnait.C'était juste le dossier.Voilà, c'est ça.Bon, c'est pas grave.Vous mettrez la version avec l'appel des fichiers comme ça,ça vous permettra de jouer avec d'autres fichiers, s'il vous plaît.
00:25:02 :Alors maintenant, on a vu tout à l'heure les fameuses regex.On commence à se présenter.Maintenant, le truc, c'est comment est-ce qu'on va mettre ça dans Python ?
00:25:15 :Par exemple, je vais commencer par les numéros de téléphone.D'accord ?On va utiliser le module RE.Et dedans, ce qu'on va faire, là, vous allez vous plaire,parce que ça va vous rappeler certains trucs qu'on a fait ensemble,on va utiliser compile.
00:25:30 :Alors, quel est l'intérêt de compile avec le module regex ?C'est qu'en fait, à chaque fois que vous créez une regex,c'est que vous l'injectez dans Python.
00:25:40 :Donc, il y a d'autres manières de l'injecter.Vous pouvez l'injecter directement en regex,et on reprend la regex comme une chaîne de caractère directement.Sauf qu'à chaque fois que vous l'utilisez,vous recréez le calcul qui va la générer en mémoire.
00:25:53 :OK ?Avec compile, il la génère une fois, et après, il la conserve en mémoire.Donc, ça permet de gagner du temps de process et du temps de RAMlorsqu'on utilise des regex.
00:26:05 :C'est pour ça que j'ai préféré vous montrer directement avec le RE compile.OK ?Alors, on va lui rentrer un petit texte brut.Vous connaissez mon amour en plus pour les...
00:26:16 :Oui, l'optimisation.L'optimisation de mémoire.On compte les excès.Alors, hop, je vais le copier directement, l'expression régulière.Hop.Donc ça, c'est une autre forme d'expression régulièrequi permet de trouver un numéro de téléphone.
00:26:38 :Alors, c'est un peu moins détaillé que ce qu'on a vu tout à l'heureparce qu'en fait, bon, là, on ne va pas faire gaffeà savoir si on a des numéros français, pas français, et ainsi de suite.
00:26:47 :Et maintenant, une fois qu'on a nos téléphones,on va par exemple...On va passer plus loin en anglais.PAUSE.ÉGAL.Alors là, ce qu'on va faire, c'est qu'on va utiliser notre téléphone.
00:27:02 :Donc, téléphone, en termes de regex, ça s'appelle un pattern.D'accord ?Ou un schéma...Voilà, les termes anglais, c'est pattern.On va utiliser notre pattern.
00:27:13 :Et on va utiliser find all.On va lui dire où chercher.Donc, dans le data qu'on a créé tout à l'heure.Et là, on va afficher ça.
00:27:27 :Hop, je lance.Et il nous renvoie une liste directementavec nos deux numéros de téléphone qu'il y a dans le texte.Je vais regarder un petit peu plus haut.
00:27:42 :Effectivement, on a bien deux numéros de téléphone ici.Et il nous les a retrouvés automatiquementd'à travers tout le texte.Maintenant, donc, j'en parlais tout à l'heure.
00:27:54 :On va changer ça.On va parler des mails.Mails, hop.On va changer ça par mail.Je vais vous mettre la regex pour les mails.
00:28:13 :Comme ça, vous aurez déjà quelques regexen plus préétablis.Voir, vérifier, parce queelles sont assez généralisteset des fois, vous pouvez obtenir des résultatsqui pourraient vous surprendre.
00:28:26 :Allô, Stéphane ?Oui, vous ne m'entendez plus ?Si on t'entend, mais moi, je...Pardon, excuse-moi s'il n'a pas reconnu.Oui, sur les numéros de téléphone.
00:28:40 :Comme tu viens d'effacer,je n'ai pas compris comment tu...En fait, comment on a cherchéparce que je vois justeD, D, D, D, partout.
00:28:51 :Alors, ça, je ne suis pas rentré dans les détails tout à l'heure.Slash D, c'est des digits, des chiffres.Vous avez aussi de tête W pour les mots.
00:29:04 :Les caractères, c'est...Attendez, j'essaie de vous retrouver tout ça.Je n'ai pas voulu rentrer trop dans le détail tout à l'heure.Alors, le petit D, c'est pour des chiffres, 0 à 9.
00:29:15 :D'accord ?D'accord.Je vous remettrai tout ça.Le grand D, c'est pour des noms de chiffres.Le W, avec un minuscule, c'est des mots,donc lettres, chiffres, underscore.
00:29:27 :Le grand W, c'est des noms de mots.Les petites S, c'est des espaces blancs.Et les grandes S, c'est des noms d'espaces blancs.D'accord.Et donc là, techniquement, il cherche une suite de caractèresqui est composée de deux chiffres, un tiré,deux chiffres, un tiré, deux chiffres, un tiré, et ainsi de suite.
00:29:44 :En fonction de la longueur du numéro de téléphone, ce qui est là.Voilà.Là, on est parti sur un numéro de téléphone à 10 chiffres.
00:29:52 :D'accord.Et donc, il a cherché une combinaison de 5 fois de chiffresséparés par des tirés.Ça marche.Voilà.C'est bon.Hop.Maintenant, je vais remettre pour l'adresse mail.
00:30:04 :Hop là.Donc là, il cherche des caractères, n'importe lequel.D'accord.En nombre, peu importe le nombre.Avec un arrobase.Même chose pour des caractères, peu importe la longueur.
00:30:21 :Là, il recherche un point.Donc là, le point de tout à l'heure qu'on n'a pas utilisé,c'est pour ça qu'il faut l'échapper avec l'anti-slash.OK.
00:30:27 :Et derrière, il va chercher une suite de caractères composéesuniquement de lettres, majuscules ou minuscules,qui comportent au moins deux caractères.D'accord.Là, le 2 virgule, ça veut dire qu'il va chercher qu'il fautqu'il y ait au moins deux caractères.
00:30:42 :Après, il peut y avoir 10, 20, 30, peu importe.OK.Je vous lance ça.Et là, pareil encore.Vous voyez, il nous ressort les deux adresses mail directement du texte.
00:30:54 :Donc là, vous voyez un petit peu l'intérêt qu'on a sur les regex.C'est assez puissant.On peut rechercher aussi avec des suites de mots.Par exemple.
00:31:10 :Lequel je vais vous faire ?Celui-là.Il est bien celui-là.Il y en aura quelques autres que je ne vous montre pas ce soirqui seront dans le document que vous mettrez sur le guide.
00:31:26 :D'accord.Je pense que celui-là, il a une petite fonction qui va vous plaire.Je récupère l'expression régulière.Voilà.Alors là, vous allez voir, il y a beaucoup moins de signes cabalistiques,mais on reste dans l'expression régulière.
00:31:49 :Là, on recherche une suite de caractères qui est composée telle que là.P, Y, T, S, O, N.D'accord.Et on va lui demander d'ignorer la classe.
00:32:00 :Vous savez ce qu'on fait des fois dans certains scriptsoù on va passer la réponse de l'input en minusculespour voir si la personne a bien répondu le bon mot.
00:32:17 :Là, par exemple, c'est un exemple.Avec ça, on pourrait faire la même chosesans déformer l'input donné par l'utilisateur.Et regardez.Effectivement, il nous a bien trouvé piton écrit deux fois en minuscules,une fois en majuscules complèteset une fois avec des majuscules et des minuscules mélangées.
00:32:35 :Et il nous les a répliqués tels quels.Mais avec la réglexe,il y a une autre petite chose que vous pouvez faire.C'est faire des remplacements.
00:32:49 :C'est-à-dire que vous pouvez déciderde remplacer un certain type de caractère dans votre texte.Donc là, je vais vous prendre tel quel celui-là.C'est-à-dire que vous pouvez déciderde remplacer un certain type de caractère dans votre texte.
00:33:02 :Donc là, je vais vous prendre tel quel celui-là.Voilà.Là, avec celui-là,on va supprimer tous les espaces du texte.C'est-à-dire qu'on va utiliser le module SUB,la méthode SUB du module réglexe.
00:33:42 :Alors SUB, qu'est-ce qu'il fait ?Il va remplacer quand il y a des espaces multiples.Il va sélectionner quand il y a des espaces multiples.
00:33:49 :Donc le petit S, c'est le plus.C'est-à-dire qu'il y a au moinsplus d'un espace.D'accord ?Il va prendre tout ça.Et avec ce pattern,il va remplacer ces espaces multiples par un seul espace.
00:34:04 :Donc on va essayer de regarder dans le texte vite faitoù est-ce qu'on en voit.Je ne les vois pas comme ça l'œil nu.On va voir le résultat.
00:34:15 :Voilà.Il a supprimé carrément les espaces,les lignes et tout.Il a regroupé le texte en un seul bout.Parce qu'en fait, vous voyez là,tous les espaces qu'on avait là,tout ce qu'on avait là,c'était des espaces qui simulaient des retours à la lignemais qui n'étaient pas vraiment des retours à la ligne.
00:34:32 :Et donc par exemple,si on avait une phrase comme ça.Et qu'on refait la même chose.Il a bientôt supprimé là où il y avait plusieurs espaces,il n'en a laissé qu'un seul.
00:35:01 :Donc là, on l'a fait avec les espaces.Mais on peut aussi très bien imaginer.Je vais faire un nouveau pattern.OK.On va lui direde rechercher par exempletac.
00:35:30 :Je vais le mettre en haut celui-là.Voilà.Entre A et F par exemple.Toutes les lettres qui sont entre A et F.OK.Eton va mettre dans le DataCleanpour que ça soit plus simple.
00:35:52 :NewPattern.subEt ce coup-ci,on va le remplacer par des X.Un peu de swap.Je vais reprendre ma phrase ici.Voilà.Je lance ça.Et vous voyez,il a remplacé toutes les lettres qui étaient entre A et F inclus.
00:36:31 :Et il les a remplacées par des X.OK.Et alors si...Et par exemple,je vais commencer déjà.Je crois que c'est comme ça.Voilà.
00:36:48 :Si je ne me trompe pas,si je fais ça,je relance.Il m'a aussi remplacé les espaces multiples par des X.Parce que là, avec le pipe,il dit, soit quand tu trouves l'expressiondes lettres que je t'ai mentionnées,soit quand tu trouves l'expressionque je t'ai mis avant,
00:37:10 :soit une lettre entre A et F,soit quand tu trouves un espace multiple.Le pipe, c'est un O, en fait, c'est ça ?Voilà.D'accord.
00:37:20 :Donc, à ce que je comprends,s'il n'y a pas un plus,c'est pour dire soit cette conditionou ces patterns ou un autre.Voilà.Là, par exemple,je vais te le faire sans le plus.
00:37:37 :Pour que tu visualises tout de suite.Et là, tu vas voir qu'on va avoir des X.Enfin, les X, on va les avoir partout.Mais il ne va pas réduire l'espace comme il l'a fait là.
00:37:46 :Tu vas voir.Tu vas pouvoir comparer les deux.Ok.Voilà.Ouais.Alors, je vais faire comme ça.Je vais te le refaire autrementpour que ce soit plus visuel.
00:37:58 :Voilà.On va faire...Non.Non.Je vais supprimer ça.Voilà.Et...Alors, on va laisser avec les X sur celui-là.Et on va printer notre attaque ligne ici.
00:38:23 :Je vais te le faire sans visuel.Comme ça, tu vas voir tout de suite la différence.Voilà.Tu vois.Sur le premier, il m'a bien remplacé par...
00:38:41 :A chaque fois qu'il y avait plus d'un espace,il me l'a remplacé par un seul espace.D'accord ?Et là, il m'a remplacé les X.
00:38:49 :Il a comblé tous les espaces,mais il ne l'a pas remplacé par un seul X.Parce qu'il a bien sélectionné chaque espaceet il l'a remplacé chaque espace par un X.
00:38:57 :Ouais, je comprends quand même.Voilà.Voilà.Donc, l'histoire des plus,ou des plus,ou les nombres qu'on a vus tout à l'heure entre le crochet...
00:39:09 :Entre les crochets...Je ne sais jamais comment les appeler, ceux-là.C'est vraiment pour dire qu'à partir du momentoù tu rencontres une multiplication de ça,ou au moins un exemplaire de ça,ou 0 ou 1, et ainsi de suite.
00:39:21 :C'est les caractères que je vous avais montrés tout à l'heure.Avec les acolades, en fait.Voilà, avec les acolades.Merci.Je cherchais le mot.Comme je n'ai plus le visuel sur le stade,je ne sais pas qui m'a aidé,mais je le remercie.
00:39:32 :Jean-Christophe.Je suis en train de rechercher.Où est-ce que je les ai ?Forcément, quand je les recherche,je les retrouve plus.Ce n'est pas drôle.
00:39:55 :Ah, ça va être là.Voilà.Tout à l'heure, on a vul'étoile, c'est 0 ou plusieurs fois le caractère.Le point de zéroisation, c'est 0 ou 1 fois.
00:40:05 :Et plus, c'est au moins une fois le caractère.Et avec les acolades,c'est le nombre précis qu'on va mettre dans les acolades.Pour résumer dans la règle hex,on va définir quels sont les types de caractèresau sens large.
00:40:22 :Lettre, chiffre, majuscule, minuscule,espace, et ainsi de suite.On va définir à quoi on va ressembler notre caractère.Donc, on travaille bien sur un caractère.
00:40:34 :Ou alors, il faut travailler sur des mots,mais je l'ai rentré bien précédemment.On va ensuite définir s'il se répète,s'il ne se répète pas,si on veut en voir une fois,s'il n'existe pas ou il existe une seule fois,ou au moins plusieurs fois,et ainsi de suite.
00:40:48 :Et c'est toutes ces associations-làqui vont faire qu'on va créer notre règle hex complexequi nous amène à ce qu'on a vu tout à l'heure.
00:40:54 :Les numéros de téléphone, les e-mails,ou tout autre type de répétition de caractèrequi pourrait se faire au sein d'un texte.Ok.Et donc, pour les numéros de téléphone du début,on aurait pu factoriser en précisant dans les accolades ?
00:41:13 :Voilà.En fait, techniquement, une règle hex,on peut toujours retrouver une méthode de la refaire.Après, pour ceux qui aiment bien le côté mathématique,on va pouvoir chercher à réduire l'expression,factoriser l'expression,de façon plus simple au niveau.
00:41:40 :Oui.On va chercher vraiment tout ce qui existe.Je reprends l'exemple de notre téléphone tout à l'heure.A la base, on sait que notre téléphone,c'est, il se présente,je vais reprendre l'étirage de ce coup-ci,cette forme-là.
00:42:02 :D'accord ?Oui.On sait déjà que le numéro ici, c'est un zéro, forcément.Donc, on peut mettre le zéro en tant que caractère tel quel.
00:42:10 :Oui.Ensuite, on sait que dans ce numéro-là,on va forcément avoir un 6 ou un 7.Oui.Et ainsi de suite.En fait, c'est cette réflexion-là qu'on va avoir en posant une règle X.
00:42:27 :Ensuite, je vais vous montrer comme ça,histoire de vous montrer un peu le raisonnement qu'on peut avoir jusqu'au bout.Tac.Tac.Ouh là.Une petite question.
00:42:37 :Ah non.C'est sur le Discord.OK.OK.Excusez-moi.Donc, je disais, on sait ensuite que c'est le numéro 09.Hop là.Et que ça, ce schéma-là, il se répète à chaque fois.
00:43:04 :On peut faire un groupe en incluant le tiré ?J'y viens, j'y viens.D'accord.OK.Hop.Voilà.Donc là, on sait qu'on a défini complètement un numéro de téléphone.
00:43:17 :Là, on s'aperçoit que ce schéma-là, il se répète trois fois.Oui.D'accord ?Oui.Carrément.On va le mettre entre parenthèses pour indiquer que c'est un groupe.
00:43:32 :OK.Et on va lui dire, celui-là,voilà,il se répète trois fois.Donc, on supprime les autres.Il y a la position du tiré qui me pose problème.
00:43:51 :Oui, là en fait.Alors attends, je reviens.Voilà.Là, on est d'accord.Je vais mettre des espaces pour que ce soit un peu plus clair.
00:44:03 :Mais le dernier, il n'a pas de tiré, en fait.À la fin.À la fin, il n'y a pas de tiré.Donc, c'est pour ça que je vais prendre ces trois-là.
00:44:16 :Oui.Là, on est bien d'accord que ces trois-là, c'est trois fois le même schéma qui se répète.Si on prend le tiré qui est juste après le 67, du coup, ça fait quatre fois.
00:44:31 :Oui, on peut le prendre comme ça, bien vu.Exactement.Vous voyez, ça commence à devenir bon en RegEx.Vous n'allez plus parler que de RegEx.
00:44:49 :Tant pis, c'est bon.Et donc là, du coup, on va refaire notre groupe.Voilà, donc là, on fait le groupe.Oui.Et là, on met, en tracolade, on met quatre.
00:45:06 :Et on efface le reste.Vous voyez, déjà, par rapport à la première version, en le reposant, j'ai déjà réussi à resimplifier l'équation.Oui.OK.Et du coup, là, on remarque qu'il y a plusieurs manières d'écrire les RegEx pour un seul numéro de téléphone ou encore…Exactement.
00:45:28 :Le tout, c'est que le raisonnement de ta RegEx et les règles après que tu vas y appliquer, soient bonnes.Alors, j'ai regardé sur une liste encore plus longue.
00:45:40 :Celui-là.C'était comme ça.Oui.Ici, c'est RegEx 101.Voilà.Ou un truc comme ça.Je ne sais plus.Hop.Voilà.Je vais le mettre dans le chat.
00:45:55 :Hop.Où est l'autre ?Hop là.Hop là.Hop là.Voilà.RegEx.Voilà.Mince, j'ai un erreur.Pardon.RegEx 101.com.Ça, c'est un petit site sur lequel vous pouvez aller tester vos RegEx.
00:46:28 :Alors, vous mettez…Attendez, je vais vous montrer comme ça.Je vais vous partager ce truc-là comme ça.On va remonter là.Tac.Je vais vous montrer vite fait.
00:46:45 :C'est RegEx.com.RegEx 101.com.Alors, attendez.Donc là.Dernièrement, j'ai testé une RegEx qui n'était pas correcteet ça fait bugger les sites.Je n'ai pas compris ce qui s'est passé.
00:47:03 :Alors.Il était tellement pas correct qu'il a fait bugger les sites carrément.Voilà.Alors, sur RegEx 101,on va mettre par exemple…Tiens, on va tester notre RegEx.
00:47:18 :C'est la main.Je vais mettre un numéro de téléphone.Si je fais comme ça, forcément, ça marche moins bien.On porte.On va remettre en test en dessous.
00:47:37 :Voir si on ressort ou pas.Notre numéro.Ok.Je copie la RegEx que l'on vient de composer ensemble.Qu'est-ce qu'il dit ?Il a bien trouvé le matchavec notre numéro de téléphone.
00:47:59 :06 12 56 78 68.Vous voyez ?Oui.Donc là, avec ça,vous rentrez le texte sur lequel vous voulez testerparce que vous savez que dans ce texte-là,vous avez la valeur qui vous intéresse.
00:48:14 :Vous composez votre RegEx dans la barre iciet vous testez.Et là, dans la fenêtre à côté,vous allez avoir le truc.Et en plus, vous voyez,il vous fait un petit texte en anglaispour vous expliquer ce que fait votre RegEx.
00:48:28 :Qu'est-ce qu'elle va rechercher ?Ce qui peut vous permettre, après de débugger,de vous rendre compte.Tiens, en fait,la RegEx que j'ai mise,elle m'a dit qu'elle cherchait là,elle cherche un caractère 0et ensuite, elle recherche un caractèrequi est présent dans la liste 6 ou 7.
00:48:45 :Mais ce n'est pas ce que je voulais.Je voulais 8, moi.Par exemple, du coup,je vais changer.Et du coup, c'est sur le navigateur, ça ?
00:48:51 :Oui, c'est sur le navigateur, oui.Parce que moi, je n'arrive pas à accéder.Je ne sais pas si je suis sur le bon lien.Attends.
00:49:00 :Je vais essayer de faire copier le lien.Hop, copier.Crac.Ok, essaye avec ce lien.Ok, attends, je vais voir.Je pense que là, c'est bon.
00:49:19 :Ça vient.Voilà.Donc, ça, c'est un petit site assez sympa.Bon, alors là,je vois que ça fait déjà presque une heurequ'on est ensemble, quand même.
00:49:27 :Bon, on a survolé le problème des RegEx.Je pense que vous avez bien compris.Donc, je vais vous montrerce que j'ai fait.Je vais vous montrerce que j'ai fait,ce que j'ai fait,ce que j'ai fait,ce que j'ai fait,ce que j'ai fait,ce que j'ai fait,
00:49:42 :ce que j'ai fait,ce que j'ai fait,ce que j'ai fait,et je pense que vous avez bien comprisqu'il y a largement de quoi travailleret beaucoup de méta-caractèresà jouer avecpour aller plus loin.
00:49:52 :Mais, ouais,franchement, c'est un petit trucqui peut être sympade se plonger dedanset je ne vais pas vous direque ça va vous servirdans l'intégralité de vos scriptset que vous n'allez faire que de la RegEx.
00:50:02 :Mais le jour où vous en aurez besoin,notamment pour le Tosa,il y a un exercicedans lequel on vous demandede composer une RegEx.
00:50:08 :D'accord.Si vous avez travaillé un petit peu le sujet,vous ne regretterez pas.Parfait.Merci.Juste une question.Dans le volet de gauche,on voit que c'est sélectionnépar défaut PHP.
00:50:22 :Il y a possibilité de mettre Python.Voilà.Il va changer de logic.Fondamentalement,ça change quoi ?Alors, hop.Quand on va mettre Flavor Python,vous voyez en haut, là,il vous indique R.
00:50:35 :Ah oui, d'accord.Oui, d'accord.OK.Pour vous indiquer,vous mettez en haut Brutet récupérez après.Là, si je fais Copier,je vais la mettre dans le texte,qu'on voie.
00:50:45 :Il nous donne la RegEx.Alors, le GM,c'est pas la peine.La RegEx qu'on doit mettre en Brutdans notre code Python.D'accord.Dans notre pattern.
00:50:58 :OK.OK.OK.OK.Si vous n'avez plus de questions,enfin,je pense qu'il va y avoirencore beaucoup de questions sur la RegEx,mais plus de questions immédiates,je vais dire.
00:51:17 :Je vais arrêter l'enregistrement,au moins qu'il y ait d'autres questionsqui se relèvent.En fait,j'avais vu dans le complément de cours,ils utilisent Match et Search.
00:51:29 :Et...Alors, Match et Search,c'est effectivement la version basepour rechercher des RegEx.D'accord ?Oui.Ce que vous allez mettre,c'est avec Compileet Find All.
00:51:40 :Oui.Je vais sûrement revenir là-dessus.Oui.Alors, Compile,c'est ce qui va faire la RegExqu'on vous montre dans le cours.Et Find All,c'est Find Search de mémoire.
00:51:50 :Attendez,je vais vérifieravant de vous dire une grosse bêtise.Je crois que je l'ai là.Hein ?Find Hitler.Voilà.Alors, vous avez Matchqui va effectivementlui rechercher au début de la chaîne.
00:52:12 :D'accord ?Search qui va cherchern'importe où dans la chaîne.C'est-à-dire que les différences,c'est que, par exemple,je vais vous montrer ça vite fait,comme ça,on verra tout fait.
00:52:23 :Voilà.Je vais faire ça vite fait.Euh...On va faire intere.match.Crac.Et hop,on va faire ça.Voilà.Donc là...À l'écran,on a toujours le site, en fait.
00:52:58 :Ah, pardon.C'est pas grave.Euh...Tac, tac.On va basculer sur...Voilà.Autant pour moi.Voilà.Donc là,je vous ai écrit un petit truc vite fait.
00:53:15 :Commenter tout ça.Voilà.Donc là,il me retrouvele match de bonqu'il avait mis au début.D'accord ?Mais si, par exemple,je remplace par jour,là, il ne trouve rien.
00:53:41 :Parce qu'en fait,il ne va regarder avec matchqu'au début de la chaîne de caractère.Ah, merci.Je n'avais pas vu,je n'avais pas compris çadans le cours.
00:53:50 :Merci.Alors, après,il y a...Comment est-ce que...Voilà.Après,il y a « search ».Oui, « search », effectivement,il en parle, oui.
00:54:03 :Alors,si je fais avec bon,comme tout à l'heure,ça marche.Et si je fais avec jour,ça marche aussi.Parce qu'en fait,il va chercher dans la chaîne de caractèrela première occurrence.
00:54:19 :C'est-à-dire que même sile début de la chaîne ne correspond pas,il va continuer à chercherjusqu'à ce qu'il trouve une occurrence.D'accord.« Match »,je vais vous l'écrire là,ça pourrait correspondreà ce qu'on mettait tout à l'heure.
00:54:32 :Le caractère là,pour dire que c'est au début de la chaîne.Ah, d'accord.Voilà.Après, vous avez « find all »qu'on a utilisé.Vous avez aussi « find iter ».
00:54:44 :« Find iter »,il va vous redonner un itérateurd'objetscomme si vous aviez fait une rechercheavec « match ».Donc, il va prendre tout l'ensemble de la chaîne,il va rechercherles débuts de chaque objetet il va trouver,pour chaque objet,le nom,s'il y a le début
00:55:01 :de la chaîne de caractère correspond.Ok.Après, vous avez aussi,je ne vous l'ai pas montré,parce que nous là,on revient sur une fonctionassez proche de ce qu'on trouve en Python,il y a le « split ».
00:55:13 :Vous savez, par exemple,un autre exemple de regexque vous avez utilisé énormément,je pense.Voilà.Je vais mettre ça dans une data.Ok.Vous avez découvert un secretderrière une fonction de Python.
00:55:40 :Hop.Si je prends « data »que je fais « .split ».Ok.Là, on est d'accord,il m'affiche une listequ'il a séparée par les espaces.
00:55:53 :Oui.Ok.Et si je fais « j »,il me fait la même chose,sauf qu'il utilise le « j »pour séparer.Oui.Et bien là,on est en plein dans le « split »des regex.
00:56:09 :D'accord.En fait,derrière cette méthode « split »,qu'est-ce qui se cache ?C'est une petite utilisation de regexoù il va rechercherà retrouver le patternqu'on lui met làpour faire les séparationsdans la chaîne de caractèrequ'on lui a placée.
00:56:23 :D'accord.Voilà, voilà.Parfait.Merci pour la précision.Pas de souci.Merci Stéphane.Est-ce que vous avez d'autres questions ?Est-ce que ça vous sembleà peu près clair tout ça ?
Aucune occurrence trouvée pour « ».