Expressions régulières

Bonjour,

Quelle est l'expression régulière pour filtrer un mot se terminant par une chaine de caractère, par exemple OL et quels soient le nombre de caractères précédents OL

Exemple
toutsurol
gool
bol

Merci de votre aide
Configuration: Windows XP
Firefox 2.0.0.11

4 réponses

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

    Ca dépend du logiciel que tu utilises.
    Mais ici, l'expression à utiliser est simple, elle devrait passer partout :
    [a-zA-Z]*ol\b
    Note qu'ici, la casse est respectée.
    1. Peux-tu me dire à quoi correspond \b ?
      1. Modérateur
        Salut,

        man grep
        L'accent circonflexe ^ et le symbole dollar $ sont des  méta-caractères
               correspondant  respectivement  à  une chaîne vide au début et en fin de
               ligne.  Les symboles \< et \> correspondent respectivement à une chaîne
               vide  en début et en fin de mot.  Le symbole \b correspond à une chaîne
               vide à l'extrémité d'un mot, et \B correspond à une chaîne vide  ne  se
               trouvant pas à une extrémité de mot.
        ;-))
    2. Modérateur
      Je sais qu'avec les regex en PHP, ça correspond à une limite de mot (c'est à dire [^A-Za-z]).
      Mais ça ne consomme pas de caractère.
      C'est à dire si tu fais un remplacement, les caractères qui correspondent à \b ne seront pas remplacés.
      (oups, j'ai fait une erreur dans mon message précédent, la deuxième expression était fausse. je l'ai enlevée)
      --
      Sylvain
      1. Modérateur
        Salut,

        je n'ai pas étudier les regex de PHP

        ça correspond à une limite de mot (c'est à dire [^A-Za-z]).
        toutefois ce n'est pas plutôt [^a-zA-Z0-9_] sauf si on étends l'expression pour les caractères UNICODE

        les caractères qui correspondent à \b
        \b c'est une assertion de largeur nulle qui ne correspond à aucun caractère, mais seulement à un emplacement
      2. Modérateur
        @lami20jtoutefois ce n'est pas plutôt [^a-zA-Z0-9_] sauf si on étends l'expression pour les caractères UNICODE
        Peut-être, je ne sais pas.
        Je suis loin d'être un expert en regex.

        \b c'est une assertion de largeur nulle qui ne correspond à aucun caractère, mais seulement à un emplacement
        autant pour moi.
        --
        Sylvain
    3. Voici un extrait du fichier http://hostsfile.org/fr/proxy.txt
      J'ai suivi ton conseil (voir en gras) mais l'URL contenant le mot bestofsex apparait.
      J'utilise IE7 sous Windows XP
      As-tu une idée du problème ?

      // l'URl est refusée si un des noms finit par l'un des mots suivants
      // sauf si elle a été jugée acceptable par "GoodNetworks".
      // ATTENTION : NE PLACEZ PAS D'EXPRESSION RÉGULIÈRE À LA FIN DES VALEURS.
      var BadURL_WordEnds = new Array();
      i=0;
      BadURL_WordEnds[i++] = "anal";
      BadURL_WordEnds[i++] = "babe";
      BadURL_WordEnds[i++] = "butt";
      BadURL_WordEnds[i++] = "chest";
      BadURL_WordEnds[i++] = "coed";
      BadURL_WordEnds[i++] = "[^h]eros";
      BadURL_WordEnds[i++] = "escort";
      BadURL_WordEnds[i++] = "gals";
      BadURL_WordEnds[i++] = "gay";
      BadURL_WordEnds[i++] = "girl";
      BadURL_WordEnds[i++] = "girls";
      BadURL_WordEnds[i++] = "girlz";
      // BadURL_WordEnds[i++] = "[^s]hot"; // VOTRE CHOIX
      BadURL_WordEnds[i++] = "legs";
      BadURL_WordEnds[i++] = "mature";
      BadURL_WordEnds[i++] = "nude";
      BadURL_WordEnds[i++] = "[^u]pee";
      BadURL_WordEnds[i++] = "pink";
      BadURL_WordEnds[i++] = "piss";
      BadURL_WordEnds[i++] = "rape";
      BadURL_WordEnds[i++] = "[a-zA-Z]*sex";
      BadURL_WordEnds[i++] = "sexe";
      BadURL_WordEnds[i++] = "teen";