Expressions régulières

soummam Messages postés 184 Statut Membre -  
lami20j Messages postés 21506 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.
Configuration: Windows XP
Firefox 2.0.0.11

10 réponses

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

    Ben elle est toute faite ton expression régulière : titi.blogs.fr/ non ?
    0
  2. soummam Messages postés 184 Statut Membre 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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. soummam Messages postés 184 Statut Membre 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
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    tu peut écrire par exemple
     titi.*\.com
    0
  8. soummam Messages postés 184 Statut Membre 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
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  10. soummam Messages postés 184 Statut Membre 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
  11. 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
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      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
      1. Utilisateur anonyme > lami20j Messages postés 21506 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
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > 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