Expressions régulières

soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -  
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -
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

4 réponses

Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   825
 
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.
0
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
Peux-tu me dire à quoi correspond \b ?
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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.
;-))
0
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   825
 
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
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
0
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   825 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
toutefois 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
0
soummam Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   110
 
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";
0