Expressions régulières

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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    Ben elle est toute faite ton expression régulière : titi.blogs.fr/ non ?
    1. 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)
      1. Modérateur
        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
        1. Modérateur
          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

          1. 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/
            1. 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.
              1. Modérateur
                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 ;-)
                1. 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 ?
                  1. 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.
                    1. Modérateur
                      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
                    2. @lami20jSAlut 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 ;-)
                    3. Modérateur
                      @Utilisateur anonymeIl 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. ;-)