mars073 Posté(e) July 26, 2014 Signaler Share Posté(e) July 26, 2014 (modifié) Bonjour à tous,Vu que j'ai remarqué que dans mes derniers tuto j'utilisais pas mal de regex j'ai décidé d'en faire un topic plus approfondit.Qu'est-ce que veux dire regex d'abord? tout simplement "REGular EXpression" ou "Expression régulière" (expreg) en français si vous n'avez pas compris. Et si vous ne savez pas ce que c'est une expression régulière cela explique le fait que vous lissez ce topic Bref en d'autres termes une expression régulière, aussi appelé "motif de recherche", est la structure que l'on donne à une chaîne de caractère et qui est beaucoup utilisé en programmation (exemple: vérifier lors qu'une inscription la structure d'un email) enfin je ne vois pas d'autres domaines où cela pourrait-être utilisé ._.Petite notion à savoir: un caractère en majuscule n'est pas le même en minuscule (a=/=A), un espace est aussi un caractère, un caractère peut-être inexistant(NULL) selon le contexte de l'utilisation il peut donc être représenté par un espace ou ne pas être mit, les caractères alphanumériques sont les caractères de base de a à z et de 0 à 9 (majuscule et minuscules inclussent).Vous allons constituer le regex à l'aide de divers symbole:- () : groupement, utilisé pour récupération de la donnée le plus souventExemple: pas d'idée sans spoil la suite- [] : groupe de caractères possibleExemple: les caractères possibles sont a, b et/ou c : [abc]- [^] : Tout les caractères sauf...Exemple: ne peut pas commencer par un 0: ^[^0]- ^ : l'expression commence par ...Exemple: ligne qui commence par "meli": ^meli- $ : l'expression termine par ...Exemple: ligne qui termine par "es": es$- - : tout les caractères compris entreExemple: Tout les caractères de a à z: [a-z]- {} : répétition du caractèreExemple: Il faut entre 2 et 5 caractère de a à z: [a-z]{2,5}- * : répétition du nombre du caractère entre 0 à l'infiniExemple: les caractères a, b et c peuvent être présent: [abc]*- + : répétition au moins une foisExemple: les caractères a, b ou c doit être présent au mains une fois: [abc]+- . : n'importe quel caractèreExemple: n'importe quel caractère qui doit-être entre d et b: d.b- ? : le caractère avant est optionnelExemple: le s à la fin de patates n'est pas obligatoire: patates?- \ : quand vous voulez utiliser un caractère qui est un symbole de regex pour le "désactiver"Exemple: n'importe quel caractère au moins répété au moins une fois entre des parenthèses: \(.+\)- (|) : différente possibilité possibleExemple: différentes terminaison possible mais ça commence par meli: ^meli(chat|shout|télécommunicateur)Bon après il y a les variantes en programmation pour exemple pour rendre insensible à la cas (ne pas faire la différence entre la majuscule et minuscule):en php on met un # puis des paramètres dont "i" dans ce cas:(exemple|example)#idans un htaccess c'est au début toujours avec un "i"(?i)(exemple|example) Je vais encore vous donner quelques exemples pour essayer de mieux vous faire synthétiser, on va travailler en contexte car j'ai faire des contextes:-premier contexte un système d'inscription:# vérification que le nom d'utilisateur ne contient que des caractères alphanumérique minimum un caractère: ^[a-zA-Z0-9]+$ # vérification d'une adresse email: ^[a-zA-Z0-9.]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}$ # d'après la norme RFC machin le regex correct est extrêmement long et moche - deuxième dans un htaccess je "capte" le chiffe entré dans dans l'url (qui servira par la suite à générer une image:# on cherche un chiffre qui est présent au moins une fois est qui peut contenir un point, le point était la virgule d'un chiffre en programmation ^image\-([0-9]+|[0-9]+\.[0-9]+)\.png$ comme vous le voyez j'ai mis plusieurs possibilités (2) qui sont séparées par une | j'ai mis un \ devant les caractères qui on une symbolique en regex, et donc si j'entre /image-073.png cela retournera 073 et si j'entre /image-0.73.png cela retournera 0.73il existe encore quelques trucs:- \d : remplace [0-9] c'est le d pour décimal mais je ne sais plus si ça prend les points en compte (normalement non)- \n : nouvelle ligneen php:- [[:alnum:]]+ : il y en a plein de ce type que je n'ai jamais utilisé, mais je pense dans ce cas-ci ça vérifie si c'est une numérique donc la syntaxe est assez large ._.je pense avoir tout globalement tout dit, si vous avez besoin aide vous n'avez cas répondre au sujet Site assez sympa: expreg.com Modifié September 9, 2014 par mars073 3 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) July 26, 2014 Signaler Share Posté(e) July 26, 2014 Merci du partage, c'est pratique lorsqu'on traite des données saisies par les utilisateurs côté serveur. +1 rep. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mars073 Posté(e) July 26, 2014 Auteur Signaler Share Posté(e) July 26, 2014 Je m'en sers aussi pour la collecte d’information sur des sites externes, c'est super utile. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) July 26, 2014 Signaler Share Posté(e) July 26, 2014 Pour un crawler ? Comment ça ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mars073 Posté(e) July 26, 2014 Auteur Signaler Share Posté(e) July 26, 2014 Par exemple pour le site d'une guilde j'ai fais un script qui charge la page d'un autre site où il y a un top avez plein d'information et je l'ai récupère, les reconditionnes et je l'ai réaffiche ou je génère une image avec vu qu'il chargait 5 sites en même temps et que certains sites prennent 5sec à charger je fais un cache d'un jour pour ne pas ralentir le site car pour moi le site doit être affiche en moins de 1sec même si du contenu doit encore charger derrière Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) July 27, 2014 Signaler Share Posté(e) July 27, 2014 Pas mal, j'aime bien le cheminement. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.