Expressions régulières

soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

je souhaiterais filtrer uniquement une URL particulière à l'aide d'expressions régulières intégrées dans un script.

Par exemple
titi.blogs.fr/

et non
titi.blogs.com/
toto.blogs.fr/
tutu.blogs.fr/
titi.pif.fr/
etc.

Merci de me donner la solution.

10 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Ben elle est toute faite ton expression régulière : titi.blogs.fr/ non ?
0
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
J'ai voulu tuer une mouche avec un canon, effectivement ça marche.
Merci

Donc si j'ai bien compris l'opérateur ET est le . (point)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Non !

On recherche seulement une chaine de caractères qui corresponde à ton motif tel qu'il est, à savoir :
- qui contient le mot "titi"
- suivi d'un point
- suivi de "blogs"
- suivi d'un point
- suivi de "fr"
- suivi d'un slash
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

en fait titi.blogs.fr/ n'est pas vraiment une expression régulière, mais plutôt littérale avec l'exception que le point est un métacaractère
dans ton cas si tu l'utilise telle quelle tu reconnaîtras aussi
titiAblogsBfr
titi0blog9fr
etc.

donc il faut echapper le point avec un backslash pour qu'il soit reconnu littéralement
donc l'expression devra être
titi\.blogs\.fr

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
Merci de votre aide intéressante,

Mais comment faire pour filtrer uniquement des liens qui ont précisément certains motifs ?

Exemple : je veux reconnaitre uniquement le lien qui a titi ET com

titi.blogs.com/
toto.blogs.fr/
tutu.blogs.fr/
titi.pif.fr/
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

tu peut écrire par exemple
 titi.*\.com
0
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
Merci lami20j
Mais ça ne marche pas dans mon cas.

Peut-être parce ce que les motifs titi ET com peuvent être positionnés aléatoirement dans la chaine de caractères.
--titi-com
-----titi----com
----------titi---------com

--- représentent des caractères quelconques --> lettres ? - . / # :

Si quelqu'un a une idée, je suis preneur.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

titi.*\.com
veut dire "cherche t suit d'un i suit d'un t suit d'un i, suit de n'importe quel caractère 0,1 ou n'importe combien de fois, suit d'un point, suit d'un c, suit d'un o, suit d'un m

si tu ne donne pas le fichier sur lequel tu veux travailler on ne pourra que te donner des indices mais jamais la solution réelle ;-)
0
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
Ce ne sont pas des fichiers mais des URL à filtrer, ces URL je ne les connait pas. C'est GOOGLE qui me les donnera.

Je veux par exemple filtrer les URL qui ont à la fois les motifs FORUM et SEXE
Mais laisser passer celles qui ont FORUM et INFORMATIQUE.

Le problème est que les URL ont une longueur différente et que les mots en question ne se trouvent pas au même endroit
dans la chaine de caractères qui peuvent être de surcroit différents.

D'où mes questions ?
0
Utilisateur anonyme
 
SAlut,
* est le joker, si tu veux, si tu inclues dans ton filtre :
*sexe* par exemple, tu filtreras toutes les url contenant au moins une fois le mot "sexe", où qu'il soit placé dans l'url,
*sexe*forum, te donnera filtrera toutes les urls ou ces mots apparaissent qu moins une fois dans cet ordre-là,
pour prendre aussi en compte l'inverse, mes faibles connaissances me suggèrent de placer également comme filtre *forum*sexe* mais il y a sans doute expression régulière que je ne connais pas qui permettrait de résoudre me problème en un seul filtre.
J'espère néanmois que cela pourra t'aider.
Bonne soirée.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

* est un caractère qui a des signification différentes en fonction d'environnement utilisé.

Par exemple pour le shell, * c'est un caractère de globalisation (qu'on peut appelé jocker ou caractère générique), qui permet de couvrir la plage n'importe quel caracète

Donc *sexe* peut être n'importe quoi avec le mot sexe à l'intérieur ;-))))

Ca veut dire
sexe
ksdjfsexe
jsdkfjsexeksdjfkljsd
sjdkfjsexe.com
etc

* pour les expressions régulières c'est un métacaractère quantificateur qui s'applique uniquement au caractère oui métacaractère qui le précède, et il veut dire zéro fois, une fois ou n'importe combien de fois que tu peux

Donc *sexe* s'est une regex incorrecte vu que le 1er * ne quantifie rien
Correct sera .*sexe*

Mais en ce cas .*sexe* reconnait zéro, une fois ou n'importe combien de fois un n'importe quel caractère suit de s, e, x, e zéro fois, une fois ou n'importe combien de fois

Ca veut dire que .*sexe* peur reconnaître
sex
ajajfkljsex
jsdfkj sklsexe
sdkjfklsjdsexeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
mais pas
sdkfjksexe.com
0
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
SAlut lamij,
je te remercies de ces explications assez detaillées malheureusement je vais devoir t'avouer que je n'ai rien compris :(

si .*sexe* reconnait jsdfkj sklsexe, pourquoi ne reconnait-il pas sdkfjksexe.com ?
Il y a une subtilité que j'ai dois avoir du mal à appréhender sur ce point-là.
Merci d'avance si tu peux m'eclairer ;-)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > Utilisateur anonyme
 
Il y a une chose que je n'ai pas precisé.
Il faut tenir compte de l'implementation des regex dans l'outils respectif.

Je suis au boulot, et je n'ai pas le temps mai ce soir je vais te donner des exemples pour mieux comprendre.

Pour l'instant la chose que je peux dire c'est que si on veut parser un texte on a besoin d'au moins 3 choses

- connaître la structure de texte
- savoir l'outil qu'on veut utiliser
- connaître l'implementation des regex dans l'outil qu'on utilise

Et puis, des cigarettes, des bonbons, du cafénn,du thé, de la musique, du temps libre etc. ;-)
0